电话
400 9058 355
MySQL远程访问需依次配置:1.创建'root'@'%'用户并授权;2.放行3306端口防火墙;3.将bind-address改为0.0.0.0;4.MySQL 8.0+需处理caching_sha2_password兼容性问题。
MySQL 默认安装后,root 用户的 host 是 'localhost',只允许本机连接。远程访问需要将其改为 '%'(匹配任意主机),或指定 IP 更安全。
mysql -u root -p
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SELECT user, host FROM mysql.user WHERE user = 'root';——应看到
host 列包含 %
即使 MySQL 允许远程连接,系统防火墙也可能拦截请求。常见错误现象是“Connection refused”或“timeout”,但 telnet your_ip 3306 不通。
sudo ufw allow 3306或临时禁用:
sudo ufw disable
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
MySQL 默认可能只绑定 127.0.0.1,导致即使用户和防火墙都配对了,仍无法远程连接。
/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或
/etc/my.cnf(CentOS)
bind-address 行,改为:bind-address = 0.0.0.0(监听所有 IPv4 接口)
bind-address = 192.168.1.100
sudo systemctl restart mysql(Ubuntu)或
sudo systemctl restart mysqld(CentOS)
sudo netstat -tuln | grep :3306——输出中应含
*:3306 或具体 IP:3306,而非仅 127.0.0.1:3306
MySQL 8.0 默认使用 caching_sha2_password 插件,部分旧客户端(如某些 Python pymysql 版本、Navicat 旧版)不支持,会报错 Authentication plugin 'caching_sha2_password' cannot be loaded。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
auth_plugin='caching_sha2_password')SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
MySQL 远程访问失败时,90% 的情况卡在 bind-address、防火墙、用户 host 三者之一;密码插件问题多出现在 MySQL 8.0+ 与老工具混用场景,容易被忽略。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...