直接连接自己的服务器上的数据库进行修改,可以使用以下方法:
在服务器上登录mysql
mysql -u username -p
选择 mysql数据库
use mysql;
查看当前连接设置
select host, user from user;
默认mysql只能使用本地连接.png
update user set host='%' where user='root'
flush privileges;
//想要更改及时生效,这一句不能忘, 使用grant语句修改可以不使用这一句
即更新user表中user为root 的host为%,任意主机都可进行连接。
还有一种方式是通过更改授权的方式来指定用户可连接的主机对象
grant all privileges on *.* TO 'username'@'%' identified by 'userpasswd' with grant option;
这个和上面的直接改表效果一样,都是允许任何注意对该用户进行连接
GRANT ALL PRIVILEGES ON *.* TO 'username'@'172.22.254.1' IDENTIFIED BY '123456' WITH GRANT OPTION;
注意了,注意了
使用授权语句进行远程连接,这里如果你使用了一个原来只能在本地连接的用户(eg. root),再使用这条语句是相当于创建了一个只能远程连接的root用户,且远程连接密码是 ‘123456’(identified by 后面的内容就是你远程登录时的密码),而且神器的是,这两个用户的密码不混淆,原来在本地登陆的密码还能在本地登录,但是不能使用远程登录的密码进行的登录。远程登录时也不能使用原来在服务器上的本地登录密码进行登录。
给你个图看一哈:
两种密码各司其职
如果你有自己的固定公网ip后可设置单独的连接权限,更加安全
这里复习一下mysql grant授权语句的使用:
grant privileges1, privileges2, ... on databases.objectsTO user@localhost [identified by 'passwd'] with grant option
privileges1, privileges, ... 代表授予的权限,即 增删改查等权限
ON 后面是权限作用的范围,支持全局权限(.), 或者是某个数据库内某个对象
TO 后面跟的就是所要授权的用户及登录类型(localhost:本地主机,%:任意主机)
with grant option:允许该用户授权传播,即这个用户也能对其他用户进行授权操作(限于自己拥有的权限)。