1. 查看现在可以登录的用户和地址
mysql> use mysql;
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.01 sec)
这里每个账号对应一列host,就是允许登陆的地址,如果host为%,那么就是所有主机都可以登陆。
2.加入全部地址可以登录
root为登录的用户,passwd为登录的密码
下面两个方法都可以,第一条是增加一个用户,第二条好像是会直接更改了原来的root@localhost的记录
个人建议采用第一种方法
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.01 sec)
或者
mysql> update user set host = '%' where user ='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
有时候可能会出现错误信息,不管直接更新下权限,重新启动即可
3.再次查看发现已经新增一条
mysql> select host,user from user; #此时增加了一条,
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
5 rows in set (0.00 sec)
4.更新权限
flush privileges; #刷新刚刚修改的权限
如果还是不能外连
1、尝试一下修改配置:
修改bind-address=127.0.0.1为bind-address=0.0.0.0
- 一般配置文件位置:
- window是找到my.ini文件,
- linux是找my.etc,如果是ubutu,配置文件在
/etc/mysql/my.cnf
查看具体位置
2、查看下防火墙的,尝试下关闭防火墙,或者把mysql端口(默认3306)开放
#防火墙开放3306端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
#更新下规则配置
[root@localhost ~]# firewall-cmd --reload
success
保险起见,修改完重启下mysql服务service mysql restart