远程连接 mySql数据库10061、1045错误

远程连接 mySql数据库10061、1045错误

使用navicat连接远程的mysql数据报错:

远程连接 mySql数据库10061、1045错误_第1张图片

有朋友可能会碰到使用Navicat for mysql 远程连接 mySql数据库会提示10061、1045错误或 2003-Can’t connect to MySQL on ’192.168.1.2’(10061),这个原因是因为MySQL不准许远程连接。

最简单的办法是

MySQL配置文件修改
在windows服务端MySQL文件夹下找到my.ini文件。修改或者注释掉bind-address=127.0.0.1 为 bind-address=0.0.0.0 (在MySQL 5的my.ini中未发现此项)
在Linux服务端修改
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

远程连接 mySql数据库10061、1045错误_第2张图片

重启mysql服务

MySQL远程配置

# mysql -u用户名 -p密码 (-h端口:本机可以不写)
mysql -uroot -p123456

use mysql

# 8.0版本以上的mysql 需要先写
update mysql.user set host = '%' where user = 'root';

// MySQL8.0以下版本使用语句 %表示多有机器。
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'your password'; 

// MySQL8.0以上新的语句
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your password';

# 刷新权限
flush privileges;

对于允许远程访问,有两种角色,一种是我们的root用户,还有一种是非root用户,从安全的角度(我也不知道什么角度,听别人说的,暂且相信着吧),远程访问最好不要用root用户
// 切换数据库
use mysql;

// 创建用户(user1:用户名;%:任意ip,也可以指定,root默认就是localhost;123456:登录密码)

CREATE USER 'user1'@'%' IDENTIFIED BY '123456';

// 授权,默认创建的用户权限是usage,就是无权限,只能登录而已,
//(all:所有权限,这里有select,update等等权限,可以去搜一下;
// 后面的*.*:指定数据库.指定表,这里是所有;to后面就是你刚才创建的用户)

GRANT ALL ON *.* to 'user1'@'%';

// 注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令: 

GRANT all ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

// 刷新权限
FLUSH PRIVILEGES;
然后可以查看是否已经修改成功
select user,host from user

远程连接 mySql数据库10061、1045错误_第3张图片

这样在远端就可以通过root用户访问Mysql

注意

1.修改好mysql配置文件一定要重启mysql服务

2.修改好mysql远程配置一定要刷新权限

你可能感兴趣的:(MySQL)