目录

1.环境说明

2.问题说明

2.1.用户权限设置

2.2.mysql远程连接设置


1.环境说明

[客户端] windows 10 / PyCharm/ Python 3.7

[服务端] ubuntu/ mysql

2.问题说明

[问题描述] pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '192.168.x.x' ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)")

[原因分析]

  • 1.mysql中用户权限不足
  • 2.mysql远程连接配置存在问题

2.1.用户权限设置

-- 1.打开mysql
mysql -u root -p [root用户密码]
-- 若上述操作提示:ERROR 1698 (28000): Access denied for user 'root'@'localhost',则使用如下文件中对应用户及对应密码
sudo cat /etc/mysql/debian.cnf
-- # Automatically generated for Debian scripts. DO NOT TOUCH!
-- [client]
-- host     = localhost
-- user     = debian-sys-maint
-- password = kZoAJ9PoqLoqfOJ9
-- socket   = /var/run/mysqld/mysqld.sock
mysql -u debian-sys-maint -p kZoAJ9PoqLoqfOJ9


-- 2.切换到mysql数据库,并查看user表中的用户信息
use mysql;
select host,user from user;

-- 3.新创建一个具有全部权限且host='%'的用户用于远程连接
sudo create user 'username'@'%';
sudo passwd 'username'; -- 设置用户登录密码
grant all privileges on *.* to 'username'@'%';
-- 再执行以下步骤2中的操作,查看用户'username'的host是否为'%',如果是,则支持远程连接

-- 4.设置完毕(刷新权限),测试远程连接是否成功
flush privileges;

2.2.mysql远程连接设置

若上述操作仍然不能正常连接,则进行如下操作:

-- 1.修改/etc/mysql/mysql.conf.d/mysqld.cnf文件中的默认绑定ip
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
-- 41行中的本地连接地址修改为mysql所在远端服务器的地址即可
-- 39 # Instead of skip-networking the default is now to listen only on
-- 40 # localhost which is more compatible and is not less secure.
-- 41 bind-address            = 192.168.x.x


-- 2.重启mysql服务
sudo /etc/init.d/mysql restart


-- 3.测试远程连接是否成功

 

 
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐