pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'x.x.x.x' [Errno 111] Connection refused "
问题
1. 用户权限分配不当
localhost只能本地访问,其他地址访问不了,% 是所有IP都能访问。
查看权限
mysql -u root
(root用户无密码)或者mysql -u root -p
(root用户有密码)进入mysqluse mysql;
:选择数据库select host,user from user;
:查看用户权限。
分配权限
grant all privileges on *.* to '用户名'@'%' identified by '用户密码';
2. IP地址传错(IP地址确认无误,转下一条)
- 使用
ifconfig
查看IP地址。一定一定在Ubuntu终端中使用ifconfig
查看IP地址,不要理所当然把服务器上的某串数字作为IP。一切以终端显示的数字为准,即红心被遮挡住的位置。
3. 配置允许所有ip访问。注释掉bind-address配置项(两种情况)
3.1 /etc/mysql/my.cnf文件中有bind-address这一行,直接 # 注释掉即可
3.2 /etc/mysql/my.cnf文件中没有bind-address这一行
使用sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
打开/etc/msql/mysqld.conf.d/mysqld.cnf文件,注释bind-address一行。
3.3 原因
bind-address = 127.0.0.1
:只监听本地连接,只允许本机访问。
bind-address = 0.0.0.0
:系统默认配置,监听所有网卡,即允许所有ip访问。
4. 通过firewalld和iptables打开端口3306,8080,22,443(能打开的都打开了)。
注意:如果第一次使用firewalld和iptables的相关指令报错,多半是因为没有安装firewalld和iptables,详情请上网自行查找有关防火墙内容。
无论远程连接什么服务器,本质上还是Ubuntu系统,很多指令和处理方式都是和在Ubuntu一样的。