MySQL创建普通用户并赋予权限的步骤教程
程序员文章站
2023-03-27 17:12:25
打开cmd,切换至 E:\xampp\mysql\bin,用 root 账户连接MySQL服务器:
mysql -uroot -p -P3306
首先,创建新用户:...
打开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;