远程连接mysql 让外部访问本地数据库

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

你可能感兴趣的:(数据库)