在使用Windows系统远程连接linux下的MySQL数据库时,提示无法连接。解决方法如下:
编辑/etc/mysql/mysql.conf.d/mysqld.cnf 配置文件,注释bind-address = 127.0.0.1这一行,然后重启MySQL服务。
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉以下一行,使用#号注释:
# bind-address = 127.0.0.1
重启服务:
service mysql restart
首先以root用户登录MySQL:
sudo mysql -uroot -p
输入root密码登录MySQL。 以授权root用户为例:
mysql> grant all privileges on *.* to root@"%" identified by "password" with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
命令解释 *.*:第一个代表数据库名;第二个代表表名。这里的意思是所有数据库里的所有表都授权给用户; root:授予root账号; %:表示授权的用户IP,这里代表任意的IP地址都能访问MySQL; password:分配账号对应的密码; with grant option:这个选项表示该用户可以将自己拥有的权限授权给别人; flush privileges:刷新权限信息。 如果出现以下错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY "password"' at line 1
使用SELECT @@VERSION
命令检查自己的版本是否为8.0以上,8.0以上的mysql版本把将创建账户和赋予权限分开了,需要进行以下操作。
#创建账户
create user 'root'@'%' identified by 'password';
#赋予权限,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
grant all privileges on *.* to 'root'@'%' with grant option;
#改密码&授权超用户,本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;
详细如下:
mysql> create user 'root'@'%' identified by '431241wjw';
Query OK, 0 rows affected (0.15 sec)
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.10 sec)
mysql> exit
Bye
现在就可以使用Workbench或者Navicat等工具连接MySQL了。 使用Navicat连接有可能出现以下错误:
1251-Client does not support authentication protocol requested by server;consider upgrading MySQL client
出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 我们需要把mysql用户登录密码加密规则还原成mysql_native_password。 首先以root用户登录MySQL:
sudo mysql -uroot -p
输入root密码登录MySQL。然后使用以下命令:
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则(这行不写也可以)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
详细如下:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '431241wjw';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
至此,你可以百分之八连接到MySQL数据库了。
评论