MySQL 数据库连接是应用程序与数据库交互的基础,根据使用场景(命令行、编程语言、工具)不同,连接方式也有所区别。以下是常见的 MySQL 连接方法:
通过 MySQL 自带的命令行客户端连接,适用于快速操作或服务器端管理。
mysql -h 主机名 -u 用户名 -p [数据库名] -P 端口号
-
-h
:数据库主机地址(本地可省略,默认 localhost
)
-
-u
:登录用户名(如 root
)
-
-p
:提示输入密码(-p
后直接跟密码不推荐,有安全风险)
-
数据库名:可选,指定连接后直接切换到该数据库
-
-P
:端口号(默认 3306,非默认端口需指定)
mysql -u root -p
mysql -h 192.168.1.100 -u test_user -p -P 3307 mydb
输入命令后按提示输入密码,成功后进入 mysql>
交互界面。
应用程序通常通过编程语言的 MySQL 驱动连接数据库,以下是主流语言的连接示例:
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='your_pwd',
database='mydb',
port=3306,
charset='utf8mb4'
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
result = cursor.fetchall()
print(result)
cursor.close()
conn.close()
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLConnection {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8mb4";
String user = "root";
String password = "your_pwd";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("连接成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
<?php
$host = 'localhost';
$user = 'root';
$pass = 'your_pwd';
$dbname = 'mydb';
$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
$conn->close();
?>
主流可视化工具(Navicat、DBeaver、MySQL Workbench 等)连接步骤类似:
-
打开工具,点击 “新建连接” 或 “连接” 按钮。
-
填写连接信息:
-
连接名:自定义(如 “本地 MySQL”)
-
主机名 / IP 地址:
localhost
或远程服务器 IP
-
端口:默认 3306
-
用户名 / 密码:数据库登录凭据
-
数据库:可选,默认连接后显示所有库
-
点击 “测试连接”,成功后保存连接,双击即可进入。
-
“Access denied for user” 错误:
-
用户名或密码错误,检查凭据是否正确。
-
用户无远程访问权限,需授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-
“Can't connect to MySQL server” 错误:
-
数据库服务未启动,重启服务(见前文 “重启命令”)。
-
主机地址或端口错误,确认服务器 IP 和端口是否正确。
-
防火墙拦截,检查服务器防火墙是否开放 3306 端口。
-
中文乱码:
-
连接时指定字符集为
utf8mb4
(支持 emoji 和所有中文)。
-
确保数据库和表的字符集也是
utf8mb4
。
在高并发应用中,直接频繁创建 / 关闭连接会消耗资源,建议使用连接池管理连接(如 Java 的 HikariCP、Python 的 DBUtils),核心作用是:
-
预先创建一定数量的连接,避免频繁建立连接的开销。
-
自动管理连接的分配、回收和超时,提高效率。
示例(Java HikariCP 配置):
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("root");
config.setPassword("your_pwd");
config.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(config);
Connection conn = ds.getConnection();
根据实际场景选择合适的连接方式,开发环境可用可视化工具或命令行,生产环境的应用程序需通过编程语言驱动 + 连接池实现高效连接管理。