一、环境搭建
在搭建环境之前,我们需要确认一下两个问题:
1. MySQL服务是否开启了远程访问
默认情况下,MySQL只允许本机访问,需要在 MySQL 配置文件 "my.cnf" 中修改如下:
[mysqld]
bind-address = 0.0.0.0
2. 是否设置了防火墙规则,允许端口通过
因为 MySQL 默认端口是 3306,需要在服务器的防火墙中添加规则,比如我们可以使用以下命令添加规则:
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
二、用户授权
在允许 MySQL 远程访问之前,我们需要先为远程访问用户授权。
首先登录 MySQL,执行以下命令:
mysql -u root -p
然后执行以下 SQL 语句,创建一个新的用户(以 user1 为例)并授权访问指定数据库:
CREATE USER 'user1'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database_name.* TO 'user1'@'%';
FLUSH PRIVILEGES;
上述命令创建了一个用户 'user1',允许他从任意 IP 地址访问数据库 'database_name'。
三、使用命令行连接远程 MySQL
在本地机器上使用命令行连接远程 MySQL 非常简单,执行以下命令即可:
mysql -u user1 -h your_remote_mysql_host -p
其中 "user1" 是之前创建的用户,"your_remote_mysql_host" 是远程 MySQL 主机的 IP 地址或域名,如果 MySQL 服务已经开启了默认端口(3306),就不需要再指定 "-P" 参数了。
四、使用 Python 连接远程 MySQL
Python 是一种广泛使用的编程语言,下面介绍如何使用 Python 代码连接远程 MySQL。
首先,我们需要安装 "pymysql" 库,可以使用以下命令进行安装:
pip install pymysql
然后,下面的代码展示了如何使用 Python 连接远程 MySQL:
import pymysql
# 连接远程 MySQL
conn = pymysql.connect(
host='your_remote_mysql_host',
port=3306,
user='user1',
password='password',
db='database_name',
charset='utf8mb4')
# 创建游标
cursor = conn.cursor()
# 查询数据
sql = "SELECT * FROM table_name"
cursor.execute(sql)
result = cursor.fetchall()
# 打印结果
print(result)
# 关闭游标和连接
cursor.close()
conn.close()
上述代码中,"your_remote_mysql_host" 是远程 MySQL 主机的 IP 地址或域名,"user1" 和 "password" 分别是之前创建的用户和密码,"database_name" 是指定的数据库名。在这个示例中,我们查询了数据表 "table_name" 的所有数据,并将结果打印出来。
五、使用 PHP 连接远程 MySQL
PHP 是一种流行的服务器端编程语言,在连接远程 MySQL 时可以使用 PHP 的 PDO(PHP Data Objects)扩展。
下面是一个简单的 PHP 代码示例:
<?php
// 连接远程 MySQL
$dsn = 'mysql:host=your_remote_mysql_host;dbname=database_name;charset=utf8mb4';
$username = 'user1';
$password = 'password';
$dbh = new PDO($dsn, $username, $password);
// 查询数据
$stmt = $dbh->prepare("SELECT * FROM table_name");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 打印结果
print_r($result);
// 关闭连接
$dbh = null;
?>
在上述代码中,"your_remote_mysql_host" 是远程 MySQL 主机的 IP 地址或域名,"user1" 和 "password" 分别是之前创建的用户和密码,"database_name" 是指定的数据库名。在这个示例中,我们查询了数据表 "table_name" 的所有数据,并将结果打印出来。
六、总结
本文介绍了如何搭建 Linux MySQL 远程访问环境、为远程访问用户授权、以及如何使用命令行、Python 和 PHP 连接远程 MySQL 数据库。