mysql远程连接

首先登陆数据库查看当前用户信息


mysql>mysql -u root -p 
Enter password:
******

进入mysql数据库

mysql> use mysql;
Database changed

查看当前用户信息,其中host是user允许访问的主机(可为主机名也可为ip地址)

mysql> select host,user from user;
+--------------+------+
| host         | user |                            
+--------------+------+
| localhost    | root |
| 192.168.1.1  | root |
+--------------+------+

此例中root用户只可以本地访问和192.168.1.1访问,我们可以用以下语句修改root用户的访问权限(授权)

mysql> grant all privileges  on *.* to root@'%' identified by 'password';    
--将所有权限给所有的主机,密码为‘root’
--其中all privileges可用某(几)个操作代替表示值授予其制定操作
--*.*可用某个特定数据库名代替表示可访问某特定数据库
--root可用其他用户代替表示修改其他用户的访问权限
--‘%’可用ip地址代替表示特定地址可以访问
--“password”中的password可用其他字符代替表示用其他密码登录

mysql> grant select,insert,update,delete
on *.* to root@'%' identified by 'password;
--将all privileges改为select,insert,update,delete操作

mysql> grant all privileges on db_test.* to root@'%' identified by 'password';
--把所有数据库改成特定数据库db_test权限
mysql> grant all privileges  on *.* to root@'196.168.1.3' identified by 'password'; 
--把所有主机可访问改成只有196.168.1.3可访问

可以新建用户以让其他主机登录,新建用户操作如下(两种方法),创建完用户之后可执行上一步骤使主机用此账户远程登录  //此步骤可选,插入后可从user表select出user和host以核对


方法之一:create user

mysql>CREATE USER ‘username’@‘host’IDENTIFIED BY 'password';

其中,host填写特定地址,identified by可省以表示没有密码,以下为例:

mysql>CREATE USER 'jacck'@'192.168.1.101' IDENDIFIED BY '123456';

mysql>CREATE USER 'jacck'@'%' IDENTIFIED BY '123456';

mysql>CREATE USER 'jacck'@'%';

还可以用

方法之二:插表法
mysql>insert into user(Host,User,Password) values('host','username',password('password'));

其中,host填写特定地址,identified by可省以表示没有密码,以下为例:
mysql> select host,user from user;

flush privileges 命令使修改生效

mysql>flush privileges;

在不需要远程访问时,可以用revoke命令删除用户授权,再用flush privileges使命令生效 

mysql> revoke all on db_test from Jacck;

授予了远程主机权限,问题还是有

1.防火墙将3306端口关闭:关闭防火墙

2.ip地址有问题:先用ping命令试验是否为网络问题

//连接我们学校的公用wifi,ping局域网的ip地址命令会出问题     宿舍的网,我试了下ping的到网络ip,但数据库连接连不上。局域网ip,ping没问题,连接也没问题(同局域网)

原文地址:https://www.cnblogs.com/Jacck/p/4520621.html