websec80

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理
  96 随笔 :: 50 文章 :: 3 评论 :: 13万 阅读

一、将用户的访问地址改为%

  1. 打开终端登录mysql数据库:
    mysql -u root -p
  2. 查看user表
    mysql> use mysql;
    Database changeed
    mysql>select host, user, authentication_string from user;

注意此处网上很多教程写的是password,那是老版的了,现在的MySQL的mysql数据库的user表中已经没有password字段了,而是换成了authentication_string

±----------±-----------------±------------------------------------------+
| host | user | authentication_string |
±----------±-----------------±------------------------------------------+
| localhost | root | ********************************** |
| localhost | mysql.session | ********************************** |
| localhost | mysql.sys | ********************************** |
| localhost | debian-sys-maint | *********************************** |
±----------±-----------------±------------------------------------------+
4 rows in set (0.00 sec)

  1. mysql> update user set host = '%' where user = 'root'

二、注释bind-address = 127.0.0.1

在Ubuntu系统中,MySQL默认只能本地访问,不能远程访问,因为访问地址被绑定死了为本地127.0.0.1,想要远程访问的话,需要去/etc/mysql/mysql.conf.d中找到bind-address = 127.0.0.1,然后注释掉这一句,也就是在这句前面加上#号。

然后重启MySQL就可以了。
重启命令为:service mysql restart

 

 

 

二、开始修改配置:
1,登进MySQL之后,

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

use mysql
3,更新域属性,'%'表示允许外部访问:

update user set host='%' where user ='root';
4,执行以上语句之后再执行:

FLUSH PRIVILEGES;
5,再执行授权语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
然后外部就可以通过账户密码访问了。

6,其它说明:

FLUSH PRIVILEGES; 命令本质上的作用是:

将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。

MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。

而不必冒太大风险。

三、可能存在的其它问题:
执行完之后,再用Navicat连接mysql,报错如下:

Client does not support authentication protocol requested by server;
报错原因:

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式Navicat 12以下客户端不支持;

Navicat 12以下客户端支持的是mysql_native_password 这种加密方式;

解决方案:

1,用如下语句查看MySQL当前加密方式

select host,user,plugin from user;
查询结果

+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys | mysql_native_password |
+-----------+------------------+-----------------------+
看第一行,root加密方式为caching_sha2_password。

2,使用命令将他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';
再次连接的时候,就成功了。

posted on   websec80  阅读(1035)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示