您的位置:

Linux MySQL 远程访问详解

一、环境搭建

在搭建环境之前,我们需要确认一下两个问题:

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 数据库。