首先登陆数据库查看当前用户信息
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没问题,连接也没问题(同局域网)