本文记录了设置本地电脑上的MySQL数据库允许被外部的服务器访问,并通过服务器上的python实现连接本地数据库的过程。
需要完成的前置工作: 在本地电脑上配置好MySQL,在服务器上配置好python环境
我的环境:
Server OS: macOS
Server Version: 8.0.32
服务器python版本:3.9.18
一、在本地电脑上设置mysql远程访问权限
(1)激活本地的mysql。
- 在终端输入:
alias mysql=/usr/local/mysql/bin/mysql"
- 再输入:
mysql -u root -p
- 最后输入密码,启动mysql。
(2)创建用于远程访问的账号,赋予全部权限,允许从所有IP进行连接(此处设置账号名称为labserver ,密码为labserver111)。依次执行下面三步指令:
- 创建用户并设置密码:
CREATE USER 'labserver'@'%' IDENTIFIED BY 'labserver111';
- 授予权限:
GRANT ALL PRIVILEGES ON . TO 'labserver'@'%' WITH GRANT OPTION;
- 执行 FLUSH PRIVILEGES 以确保权限更改立即生效:
FLUSH PRIVILEGES;
出现Query OK,则设置成功。
如果需要修改密码,可以使用 ALTER USER 语句完成:
ALTER USER 'labserver'@'%' IDENTIFIED BY 'newpassword';
注:更改 MySQL 用户的密码后,不需要重新授予权限或执行 FLUSH PRIVILEGES。在 MySQL 中,用户的权限和密码是分开管理的,使用 ALTER USER 命令更改密码只影响用户的登录凭据,而不会影响该用户已经拥有的权限。
至此,本地电脑上的mysql远程访问权限已设置完毕。
二、使用python完成远程连接
(1)在python环境中配置依赖
激活conda环境,安装 mysql-connector-python
conda install mysql-connector-python
(2)查看本地电脑的ip地址
mac电脑在终端使用指令:
ifconfig
或者点wifi图标-网络偏好设置,查看ip地址:
(3)使用以下代码测试连接情况:
# 简单测试是否成功连接
import mysql.connector
from mysql.connector import Error
try:
# 尝试连接到数据库
connection = mysql.connector.connect(
host='10.xxx.xxx.xxx', # 本地电脑的IP地址
port=3306, # MySQL端口号默认为3306,如果修改过则改为对应值
database='Chrun_Data', # 要连接的数据库名称
user='labserver', # 前面设置的远程连接用户名
password='labserver111' # 前面设置的远程连接密码
)
if connection.is_connected():
db_info = connection.get_server_info()
print("Successfully connected to MySQL Server version ", db_info)
# 这里可以执行一些数据库操作
except Error as e:
print("Error while connecting to MySQL", e)
finally:
if connection.is_connected():
connection.close()
print("MySQL connection is closed")
输出Successfully connected to MySQL Server字样,则连接成功,之后按照同样的方法建立连接即可。