新建用户
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
必须加。
例:
grant all privileges on . to 'username'@'%';
--所有权限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';