新建用户

mysql> create user 'username'@'host' identified by 'password';
  • username:要创建用户的名字。
  • host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则填“localhost” ,如果允许从远程登陆,则填 “%”
  • password:新创建用户的登陆数据库密码,如果没密码可以不写

补充说明:如果碰到新建的用户使用终端无法登陆的问题,解决方案:使用 root 用户登陆进去,执行

mysql> delete from mysql.user where User='username';
mysql> Flush Privileges;

分配权限

mysql> grant privileges on databasename.tablename to 'username'@'host';
  • privileges:表示要授予什么权力,例如可以有select,insert,delete,update等,如果要授予全部权力,则填 ALL
  • databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 " * ",* 是一个通配符,表示全部。
  • ‘username‘@’host’:表示授权给哪个用户,username的引号可以不加哦,但host必须加。

例:

  1. grant all privileges on . to 'username'@'%'; --所有权限
  2. grant selete, insert on studydb.user TO 'ducky'@'%'; --给予 ducky 用户 studydb 库下 user 表读和插入的权限

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

mysql> GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

刷新权限

mysql> Flush Privileges;

设置与更改用户密码

mysql> SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

例: SET PASSWORD FOR 'ducky'@'%' = PASSWORD("123456");
如果是当前登陆用户用

mysql> SET PASSWORD = PASSWORD("newpassword");

撤销用户权限

mysql> REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明: privilege, databasename, tablename - 同授权部分.
例: REVOKE SELECT ON *.* FROM 'ducky'@'%';

注意:假如你在给用户'ducky'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON studydb.user TO 'ducky'@'%',则在使用REVOKE SELECT ON *.* FROM 'ducky'@'%';命令并不能撤销该用户对 studydb 数据库中 user 表的 SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'ducky'@'%';REVOKE SELECT ON studydb.user FROM 'ducky'@'%';命令也不能撤销该用户对 studydb 数据库中 user 表的 SELECT 权限.

具体信息可以用命令SHOW GRANTS FOR 'ducky'@'%';查看.

删除用户

mysql> DROP USER 'username'@'host';

本文作者:
文章标签:数据库MySQL
文章标题:MySQL 创建用户并授权以及撤销权限
本文地址:https://www.ducky.vip/archives/38.html
版权说明:若无注明,本文皆 iDuckie's Blog 原创,转载请保留文章出处。
最后修改:2024 年 03 月 10 日
如果觉得我的文章对你有用,请随意赞赏