原文地址:https://www.jeremyjone.com/777/, 转载请注明。
大多数情况下,服务器都是远程的,为了安全起见,数据库账户权限一般都是本地的。那么如何开启远程权限呢?让可视化工具帮助我们更好更快的查询数据库。
查看用户权限
命令行进入MySQL
之后,输入:
use mysql;
select host,user,password from user;
可以得到当前所有用户对应的权限域。
第一列就是具有权限的域,可以看到基本都是本地。有一个 %
,它表示所有域,也就是本地和远程均有权限。这个通常默认情况下是没有的,需要创建。
知道了域,就可以查看权限了。
show grants for '用户名'@'域';
将用户名和域替换成自己的内容,可以得到如下内容:
如果没有对应的内容,则会报错提示。
用户
想要操作权限,首先需要一个用户,总不能啥时候都用 root
。所以要县创建一个用户。
创建用户
创建一个本地域的用户:
create user '用户'@'localhost' identified by 'password';
创建指定ip的用户(以192.168.1开头):
create user '用户'@'192.168.1.%' identified by 'password';
创建用于远程连接的用户:
create user '用户'@'%' identified by 'password';
删除用户
删除很简单:
drop user '用户'@'域';
修改用户
可以修改用户名:
rename user '用户名'@'域' to '新用户名'@'域';
修改用户密码
set password for '用户名'@'域'=Password('新密码');
授权
有了用户,就可以给用户授权了,也就是赋予指定用户某个表的某个操作的权限。
注意,这个操作只有在
root
环境下操作才有效。因为grant
命令只有root
下才有。
所有操作都必须给出用户的指定域,并且可以按增、删、改、查单独赋值。
1、赋予用户在所有域下,数据库 db1
的 t1
表的查询、插入、更新权限
grant select,insert,update on db1.t1 to '用户'@'%';
2、赋予用户在本地域下,数据库 db1
的所有表的删除权限
grant delete on db1.* to '用户'@'localhost';
3、赋予用户在所有域下,所有数据库的所有操作权限,<这也代表了最高权限>
grant all privileges on *.* to '用户'@'%';
取消授权
同样的,取消授权同样需要在 root
环境下操作,也同样可以单独取消任意一项内容,包括数据库、表、权限等。
# 取消表 t1 的所有权限
revoke all on db1.t1 from '用户'@'%';
# 取消所有表的所有权限
revoke all on db1.* from '用户'@'%';
# 取消所有库的所有表的更新权限
revoke update on * from '用户'@'%';
以此类推,所有权限都可以单独取消。
总结
现在,就可以创建一个用户,添加我们想要的权限,然后在Navicat中直接连接了,也不用担心其他内容会有风险。