MySQL8.0允许远程连接

本文详细介绍了如何配置MySQL以允许远程访问,包括更新用户属性和刷新权限等步骤。同时,针对远程连接时可能遇到的错误,如加密规则不匹配和连接失败等问题,提供了具体的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.设置Mysql远程登陆

1. 登进MySQL

2. 输入以下语句,进入mysql库:

use mysql

3. 更新域属性,'%'表示允许任意IP地址访问:

update user set host='%' where user ='root';

4. 执行以上语句之后再执行:

FLUSH PRIVILEGES;

5. 再执行授权语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

二. 远程连接可能出现的问题及解决方法

1. 使用Navicat Premium 连接MySQL时出现如下错误:

错误原因

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

解决方法

更改加密规则:

mysql -uroot -ppassword #登录

use mysql; #选择数据库
# 远程连接请将'localhost'换成'%'

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码

FLUSH PRIVILEGES; #刷新权限

2.MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX' (10060)

解决方法:查看、/etc/my.cnf下面是否添加了skip-grant-tables 这行代码,如果添加了则删除该行代码并重启mysql服务。

参考:MySQL8.0允许外部访问_lemon_cake的博客-CSDN博客_mysql8.0开启远程访问权限   Navicat 连接MySQL 8.0.11 出现2059错误 - 李帆1998 - 博客园

### 配置 MySQL 8.0 允许 Root 用户远程连接 #### 创建支持远程访问的 Root 用户 为了使 `root` 用户能够从任意主机 (`%`) 访问数据库,需创建一个新的具有远程访问权限的 `root` 账户: ```sql CREATE USER 'root'@'%' IDENTIFIED BY '新密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 上述命令会创建一个可以从任何 IP 地址登录的新 `root` 用户,并赋予其全部权限[^3]。 #### 修改现有 Root 用户属性 如果希望保留现有的本地 `root` 用户而仅扩展其远程访问能力,则可以通过更新用户的 `host` 属性来实现这一点: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; UPDATE user SET host='%', authentication_string=PASSWORD('新密码') WHERE user='root'; FLUSH PRIVILEGES; ``` 此操作将把默认只限于本机连接的 `root` 更改为可接受来自所有地址的请求。注意,在某些版本中可能不需要显式调用 `authentication_string` 字段;具体取决于所使用的 MySQL 版本[^1]。 #### 编辑 MySQL 配置文件以启用外部连接 为了让 MySQL Server 听取除 localhost 外其他网络接口上的连接尝试,需要调整配置文件 `/etc/mysql/mysql.conf.d/mysqld.cnf` 或者对于 CentOS 系统则是 `/etc/my.cnf` 文件内的 `[mysqld]` 段落下的 `bind-address` 参数。将其值更改为服务器的实际公网 IP 或者简单地注释掉该行以便监听所有的网卡设备: ```bash sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf # 注释 bind-address 行如下所示: # bind-address = 127.0.0.1 ``` 保存更改后重启 MySQL 服务使得新的设置生效: ```bash sudo systemctl restart mysql.service ``` 完成这些步骤之后,应该已经成功设置了允许通过互联网访问 MySQL 数据库的能力。不过出于安全考虑建议采取额外措施如防火墙规则限制以及使用强密码策略保护数据库免受未授权访问风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值