在开发各类应用系统时,mysql数据库是最常用的关系型数据库之一,实现程序与mysql数据库的稳定连接是后续进行数据操作的前提。不同编程语言的数据库连接方式存在差异,但核心都需要提供正确的连接参数。
连接mysql数据库的核心参数
无论使用哪种编程语言连接mysql数据库,都需要提前准备以下基础参数:
- 主机地址:mysql数据库所在的服务器IP,本地开发通常使用127.0.0.1
- 端口:mysql服务的默认端口是3306,若修改过配置需使用对应端口
- 用户名:具有对应数据库操作权限的mysql账号
- 密码:对应用户名的登录密码
- 数据库名:需要连接的具体数据库名称
PHP连接mysql数据库示例
PHP可以通过mysqli扩展实现mysql数据库连接,以下是基础连接代码:
<?php
// 定义连接参数
$host = '127.0.0.1';
$port = 3306;
$user = 'root';
$password = '123456';
$database = 'test_db';
// 创建连接
$conn = new mysqli($host, $user, $password, $database, $port);
// 检查连接是否成功
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
echo "PHP连接mysql数据库成功";
// 关闭连接
$conn->close();
?>
Python连接mysql数据库示例
Python需要安装pymysql库后实现连接,首先通过pip install pymysql安装依赖,再执行以下代码:
import pymysql
# 定义连接参数
host = '127.0.0.1'
port = 3306
user = 'root'
password = '123456'
database = 'test_db'
try:
# 建立连接
conn = pymysql.connect(
host=host,
port=port,
user=user,
password=password,
database=database,
charset='utf8mb4'
)
print("Python连接mysql数据库成功")
# 关闭连接
conn.close()
except Exception as e:
print(f"数据库连接失败: {e}")
Java连接mysql数据库示例
Java需要导入mysql驱动包,以下是使用JDBC实现连接的基础代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MysqlConnectDemo {
public static void main(String[] args) {
// 定义连接参数
String url = "jdbc:mysql://127.0.0.1:3306/test_db?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "123456";
Connection conn = null;
try {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
conn = DriverManager.getConnection(url, user, password);
System.out.println("Java连接mysql数据库成功");
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动加载失败");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("数据库连接失败");
e.printStackTrace();
} finally {
// 关闭连接
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
连接常见问题排查
如果连接失败可以按照以下方向排查:
- 检查mysql服务是否启动,可通过命令行执行
systemctl status mysql查看状态 - 确认连接参数是否正确,尤其是密码和数据库名是否存在拼写错误
- 检查mysql用户是否开启了远程连接权限,本地连接可确认用户host是否为localhost
- 查看防火墙是否拦截了3306端口,可临时关闭防火墙测试连接