码字,杂谈

给MySQL用户添加远程权限

大多数情况下,服务器都是远程的,为了安全起见,数据库账户权限一般都是本地的。那么如何开启远程权限呢?让可视化工具帮助我们更好更快的查询数据库。

查看用户权限

命令行进入MySQL之后,输入:

use mysql;
select host,user,password from user;

可以得到当前所有用户对应的权限域。

《给MySQL用户添加远程权限》

第一列就是具有权限的域,可以看到基本都是本地。有一个 %,它表示所有域,也就是本地和远程均有权限。这个通常默认情况下是没有的,需要创建。

知道了域,就可以查看权限了。

show grants for '用户名'@'域';

将用户名和域替换成自己的内容,可以得到如下内容:

《给MySQL用户添加远程权限》

如果没有对应的内容,则会报错提示。

用户

想要操作权限,首先需要一个用户,总不能啥时候都用 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、赋予用户在所有域下,数据库 db1t1 表的查询、插入、更新权限

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中直接连接了,也不用担心其他内容会有风险。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注