MySQl只能本地登录,无法远程登录

环境:

Ubuntu
Mysql 5.7.20

判断Mysql的端口状态

netstat -apn |grep 3306
如果输出结果包括tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -时,说明监听的host为127.0.0.1,只能本地访问,需要设置监听host:

  1. 需要修改监听的host
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    注释掉bind-address = 127.0.0.1, 即#bind-address = 127.0.0.1
  2. 重启服务
    sudo /etc/init.d/mysql restart
  3. 查看端口状态
    netstat -apn |grep 3306
    此时应为:tcp6 0 0 :::3306 :::* LISTEN -

修改用户表

当远程访问出现not allowed的提示消息时,说明远程用户无权限,则需要修改用户表:
1. 登录数据库
mysql -u root -p
2. 选择数据库
use mysql;
3. 修改root用户可以在所有机器登录(root只是举例,%表示所有机器)
update user set host = '%' where user = 'root';
4. 重启服务
sudo /etc/init.d/mysql restart

MySQL是一种流行的开源数据库管理系统,管理员帐户root可以拥有完全的访问权限,包括允许从任何远程主机连接到MySQL服务器。 然而,出于安全考虑,应该对root用户实施访问限制,以保护您的数据库系统免受非法访问和攻击。 MySQL提供了一种简单的方法来限制root用户的远程登录。这可以通过以下两种方法之一实现: 1. 修改MySQL服务器配置文件my.cnf: 用户可以通过编辑my.cnf配置文件来禁用root用户的远程访问。 ``` # vim /etc/mysql/my.cnf ``` 找到[mysqld]部分,加入一行: ``` bind-address = 127.0.0.1 ``` 这个选项会强制MySQL服务器只监听本地IP地址127.0.0.1的连接,这意味着root用户只能从本地主机登录MySQL,而无法远程主机访问。保存并退出配置文件,然后重启MySQL服务。 ``` # systemctl restart mysql ``` 2. 删除root用户的远程访问权限: 用户可以在MySQL命令行中通过执行以下命令来删除root用户的远程访问权限: ``` # mysql -u root -p Enter password: ``` 进入MySQL命令行后,运行以下命令: ``` mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'root'@'%'; mysql> DELETE FROM mysql.user WHERE User='root' AND Host='%'; mysql> FLUSH PRIVILEGES; mysql> exit; ``` 这些命令将取消root用户所有数据库的权限,并删除所有具有远程主机连接权限的root用户。然后刷新它们的权限设置并退出MySQL命令行。这会禁用root用户的远程访问权限。 尽管在MySQL中限制root用户的远程访问权限可以增加数据库的安全性,但是如果必须从远程主机访问数据库,您可以在MySQL中创建一个非root用户,授予他们最低限度的安全权限来进行数据库的操作。这样可以保护数据库免受潜在的安全威胁,同时保持正确的访问权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值