MySQL创建普通用户并赋予权限

打开cmd,切换至 E:\xampp\mysql\bin,用 root 账户连接MySQL服务器:

mysql -uroot -p -P3306

首先,创建新用户:

create user 'user01'@'127.0.0.1' identified by '666666';

create user 'user01'@'%' identified by '666666';

说明:@后面的ip地址为允许连接的客户端的ip地址,如果改为 '%',就表示客户端没有ip地址的限制。

然后,给新用户授权:

示例:

grant all privileges on *.* to 'user01'@'127.0.0.1' identified by '666666';
# 赋予新用户,从本地操作所有数据库.所有数据表的所有权限

grant all privileges on *.* to 'user01'@'%' identified by '666666';
# 赋予新用户,从外部操作所有数据库.所有数据表的所有权限(没有外部客户端的IP限制,但本地有限制)

最后,刷新权限,使权限立即生效:

FLUSH PRIVILEGES;
# 刷新权限(有时很必要)

注意事项:

  • 创建用户时,如果后面是@'127.0.0.1',则只能从本地连接。
  • 创建用户时,如果后面是@'%',就可以从外部(局域网或外网)连接;而且还可以从本地连接,且没有密码。
  • 创建用户后,该用户就可以连接MySQL了,但默认什么权限都没有,想要操作数据库,就必须进行授权。
  • 创建用户时,实际上是在mysql.user表中添加一条记录,Host(客户端地址)和User(用户名)共同确定记录的唯一性。
  • 授权时,如果对应的记录(客户端地址和用户名)已经存在,就更新该记录;否则,会添加一条记录。
  • 创建用户和授权,实际上都是操作mysql.user表。

综上所述,如果想给某个不存在的用户赋予数据库操作权限,只需一条授权命令即可。

grant all privileges on *.* to 'test'@'%' identified by '666666';
# 只执行这条授权命令,会在授权的同时,创建test用户。
# test用户,可以从外部连接MySQL(需要输入密码),具备所有权限。
# test用户,也可以从本地连接MySQL(不能输入密码),只能连接,不具备数据库操作权限。

# 如果想让test用户,在本地也具备所有权限,且用同样的密码,再授权一次即可。如下:
grant all privileges on *.* to 'test'@'127.0.0.1' identified by '666666';

也就是说,如果想给某个不存在的用户,授予所有数据库操作权限,且不论从本地还是外部连接,都具有同样的权限,且密码相同。只需执行下面两条授权命令:

grant all privileges on *.* to 'test'@'%' identified by '666666';

grant all privileges on *.* to 'test'@'127.0.0.1' identified by '666666';

删除用户:

DROP USER user01@%;
DROP USER user01@127.0.0.1;

你可能感兴趣的:(MySQL)