Linux如何访问MySQL数据库
- 数据库
- 2025-06-19
- 5
连接前的准备
-
安装MySQL客户端
若未安装客户端工具,执行以下命令:
# Ubuntu/Debian sudo apt update && sudo apt install mysql-client # CentOS/RHEL sudo yum install mysql -
确认数据库信息
- 数据库服务器IP地址(如0.0.1)
- 端口号(默认3306)
- 用户名(如root)和密码
- 数据库名称(如mydb)
-
验证网络和权限
- 确保防火墙允许访问MySQL端口: sudo ufw allow 3306/tcp # Ubuntu
- 检查用户远程连接权限(在MySQL服务器执行): GRANT ALL PRIVILEGES ON *.* TO 'username'@'client_ip' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
命令行连接(最常用)
基础连接
mysql -h [主机IP] -P [端口] -u [用户名] -p[密码] [数据库名]
- 示例: mysql -h 192.168.1.100 -P 3306 -u admin -p'MyPass123' mydb
注意:-p与密码间无空格,密码含特殊字符时用单引号包裹。

交互式输入密码(更安全)
mysql -h 192.168.1.100 -u admin -p
执行后终端会提示输入密码,避免密码泄露。
连接后操作
SHOW DATABASES; -- 查看所有数据库 USE mydb; -- 切换数据库 SELECT * FROM users; -- 查询数据 EXIT; -- 退出
图形化工具连接
-
MySQL Workbench(官方推荐)
- 安装:从 MySQL官网 下载对应版本。
- 操作:
- 打开后点击 新建连接。
- 输入主机IP、端口、用户名、密码。
- 点击 Test Connection 测试连接。
-
DBeaver(开源跨平台)

- 支持SSH隧道和SSL加密,适合远程安全连接。
- 下载地址:DBeaver官网。
编程语言连接示例
Python(使用mysql-connector-python)
import mysql.connector config = { "host": "192.168.1.100", "port": 3306, "user": "admin", "password": "MyPass123", "database": "mydb" } try: conn = mysql.connector.connect(**config) cursor = conn.cursor() cursor.execute("SELECT VERSION()") print("MySQL版本:", cursor.fetchone()[0]) except mysql.connector.Error as err: print("连接失败:", err) finally: if conn.is_connected(): cursor.close() conn.close()
PHP(PDO扩展)
<?php $host = "192.168.1.100"; $dbname = "mydb"; $user = "admin"; $pass = "MyPass123"; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); echo "连接成功!"; } catch (PDOException $e) { die("错误: " . $e->getMessage()); } ?>
常见问题解决
-
错误:Access denied for user
- 检查用户名/密码是否正确。
- 确认用户是否有远程访问权限(用代替IP允许所有主机)。
-
错误:Can't connect to MySQL server on 'x.x.x.x'
- 验证MySQL服务是否运行:systemctl status mysql
- 检查防火墙或云服务器安全组规则。
-
连接缓慢
在/etc/mysql/my.cnf中添加:
[mysqld] skip-name-resolve # 禁用DNS反向解析
安全连接建议
-
使用SSH隧道加密
ssh -L 3306:localhost:3306 user@mysql_server_ip
连接时改用-h 127.0.0.1,数据通过SSH加密传输。
-
启用SSL连接
- 在MySQL配置中启用SSL,连接时添加参数: mysql --ssl-mode=REQUIRED -u admin -p
-
避免明文密码
- 将密码存储在.my.cnf文件(权限设为600): [client] user = admin password = "MyPass123"
掌握Linux下MySQL连接是高效管理数据的基础,命令行适合快速操作,图形工具提升可视化效率,编程接口支持自动化开发,务必遵循最小权限原则,定期更新密码,并利用加密技术保障数据安全。
引用说明:
- MySQL 8.0官方文档:Connection Interfaces
- Linux man-pages项目:mysql(1)手册
- OWASP安全建议:Database Security