环境确认
mysql_native_password
升级为caching_sha2_password
),避免兼容性问题。网络权限配置
iptables
或firewalld
限制访问源IP: sudo ufw allow from 服务器公网IP to any port 3306
# 建立SSH隧道(将本地3306映射到服务器的3306) ssh -L 3306:localhost:3306 user@服务器IP -N
优点:全程加密,无需开放公网端口。
ALTER USER '用户名'@'%' REQUIRE SSL; FLUSH PRIVILEGES;
# Python示例(PyMySQL) import pymysql conn = pymysql.connect( host='localhost', user='user', password='password', db='database', ssl={'ca': '/path/to/ca-cert.pem'} )
CREATE USER 'webuser'@'服务器IP' IDENTIFIED BY '强密码'; GRANT SELECT, INSERT, UPDATE ON 数据库.* TO 'webuser'@'服务器IP';
UPDATE mysql.user SET Host='192.168.1.100' WHERE User='webuser';
// Node.js示例(使用mysql2库) const pool = mysql.createPool({ connectionLimit: 20, host: 'localhost', user: 'webuser', database: 'app_db', waitForConnections: true });
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 2; # 记录超过2秒的查询
现象 | 检查点 | 工具命令 |
---|---|---|
连接超时 | 防火墙规则、路由追踪 | traceroute 服务器IP |
拒绝访问 | 用户权限、绑定地址 | SHOW GRANTS FOR '用户'@'IP' |
数据包丢失 | MTU值匹配、网络稳定性 | ping -s 1500 服务器IP |
可信度增强实践:
mysqldump --single-transaction
确保一致性快照EXPLAIN
分析查询执行计划优化索引权威引用来源: