远程调用CentOS中的MySQL数据库是指通过网络从另一台计算机访问和操作运行在CentOS服务器上的MySQL数据库。这通常涉及到配置MySQL服务器以允许远程连接,并确保网络安全。
编辑MySQL的配置文件my.cnf
(通常位于/etc/my.cnf
或/etc/mysql/my.cnf
),找到并注释掉或修改以下行:
# 注释掉或修改为
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
然后重启MySQL服务:
sudo systemctl restart mysqld
登录到MySQL服务器并授予远程访问权限:
mysql -u root -p
在MySQL shell中执行:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
确保CentOS的防火墙允许MySQL端口(默认3306)的流量:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
原因:可能是MySQL配置未正确修改,防火墙阻止了连接,或网络设置不允许远程访问。
解决方法:
my.cnf
中的bind-address
已设置为0.0.0.0
。telnet
或nc
命令测试端口是否开放:telnet
或nc
命令测试端口是否开放:原因:可能是网络延迟或不稳定,或MySQL服务器配置不当。
解决方法:
以下是一个简单的Python示例,使用pymysql
库连接到远程MySQL数据库:
import pymysql
# 连接数据库
conn = pymysql.connect(
host='your_server_ip',
user='username',
password='password',
db='database_name',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
with conn.cursor() as cursor:
# 创建表
sql = "CREATE TABLE IF NOT EXISTS `users` (`id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL)"
cursor.execute(sql)
conn.commit()
# 插入数据
sql = "INSERT INTO `users` (`name`) VALUES (%s)"
cursor.execute(sql, ('Alice',))
conn.commit()
# 查询数据
sql = "SELECT * FROM `users`"
cursor.execute(sql)
result = cursor.fetchall()
print(result)
finally:
conn.close()
确保在实际应用中处理所有可能的异常和安全问题,如使用SSL加密连接和强密码策略。
企业创新在线学堂
企业创新在线学堂
小程序云开发官方直播课(应用开发实战)
云+社区沙龙online[数据工匠]
云+社区技术沙龙[第17期]
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
企业创新在线学堂
企业创新在线学堂
小程序云开发官方直播课(应用开发实战)
领取专属 10元无门槛券
手把手带您无忧上云