Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,比如使用Navicat连接数据库等。
一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限
登录mysql并授权:
1
2
|
mysql -uroot -p "youpassword" mysql>GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION; |
重载授权表:
1
|
FLUSH PRIVILEGES; |
退出mysql数据库:
1
|
exit |
二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限
登录mysql并授权:
1
2
|
mysql -u root -p "youpassword" GRANT ALL PRIVILEGES ON *.* TO root@ "8.8.8.8" IDENTIFIED BY "youpassword" WITH GRANT OPTION; |
重载授权表:
1
|
FLUSH PRIVILEGES; |
退出mysql数据库:
1
|
exit ; |
三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限
登录mysql并授权:
1
2
3
4
|
mysql: mysql -u root -p "youpassword" GRANT select ,insert,update,delete ON *.* TO root@ "8.8.8.8" IDENTIFIED BY "youpassword" ; |
重载授权表:
1
|
FLUSH PRIVILEGES; |
退出mysql数据库:
1
|
exit ; |
四、删除用户授权,需要使用REVOKE命令,具体命令格式为:
1
|
REVOKE privileges ON 数据库[.表名] FROM user-name; |
具体实例,先登录授权:
1
2
|
mysql: mysql -u root -p "youpassword" GRANT select ,insert,update,delete ON TEST-DB TO test -user@ "8.8.8.8" IDENTIFIED BY "youpassword" ; |
再进行删除授权操作:
1
|
REVOKE all on TEST-DB from test -user; |
注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户:
1
|
DELETE FROM user WHERE user= "test-user" ; |
重载授权表:
1
|
FLUSH PRIVILEGES; |
退出mysql数据库:
1
|
exit ; |