MySQL开启远程连接权限
文章目录
第一种方法:
查看3306端口
查看是否开启3306端口
netstat -an | grep 3306
netstat安装:sudo apt-get install net-tools
若为这种情况,则说明仍为本地
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
修改访问地址
/etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address = 127.0.0.1
将其修改为0.0.0.0
或者注释掉,两个试试
重启mysql
ubuntu> cd /var
ubuntu> sudo service mysql restart
开放3306端口
正确情况
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
第二种:
登陆 MySQL 修改远程连接权限
查看mysql数据库的user表:
mysql> SELECT `Host`,`User` FROM user;
查询结果:
+--------------+-------------------------+
| Host | User |
+--------------+-------------------------+
| localhost | root |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.infoschema |
| localhost | mysql.sys |
+--------------+-------------------------+
5 rows in set (0.00 sec)
尝试:
grant all privileges on *.* to 'root'@'%' identified by '你的密码';
或
update user set host='%' where user='root';
然后执行两次:(第一次可能会报错)
Grant all privileges on root.* to 'root'@'%';
若授权成功,且重新查询得到的结果为:
+--------------+-------------------------+
| Host | User |
+--------------+-------------------------+
| % | root |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.infoschema |
| localhost | mysql.sys |
+--------------+-------------------------+
5 rows in set (0.00 sec)
刷新配置:
flush privileges;
若连接Nevicat报错
这是因为mysql8的加密方式和Navicat不一样
则修改加密方式
alter user test identified with mysql_native_password by '你的密码';
或许两种方法叠加使用,就能暴力解决,我就是这样解决的
centos开启3306端口
开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
查看已经开放的端口
firewall-cmd --list-ports