显示所有用户

在mysql这个数据库下面有一张user表存放的MySQL的用户的数据,查询方式如下:

user mysql;
select * from user;

可以看到如下结果:

上表就会列出所有的用户及权限;

创建用户

create user  'user_name'@'host'  identified by  'password'

其中:

user_name:表示需要创建的用户的名称,也就是该用户的登录账号;

host:表示这个用户可以从那台机器上登录,如果只允许本机登录,可以设置为localhost,如果允许所有的远程机器登录,则可以设置为%,如果只允许特定IP登录,就可以设置具体的IP地址;

password:该用户登录的密码;

例子如下:

create user 'test'@'localhost' identified by '123456';//创建一个只能本地登录的test用户
create user 'test'@'192.168.0.123' identified by '123456';//创建一个只能是特定IP登录的test用户
create user 'test'@'%' identified by '123456'//创建一个可以任何IP地址登录的test用户

用户创建完成后,需要授权才能使用;

授权用户

grant 'privileges' on 'databaseName'.'tableName' to 'username'@'host'

其中:

privileges:表示权限,可以有select、update、delete、insert等,如果是需要全部权限,使用ALL

'databaseName'.'tableName':表示要具体授权给哪个数据库的哪张表,可以使用通配符* ,比如所有数据库的所有权限就应该写为*.*

'username'@'host':表示授权给具体的用户

例如:

grant select,insert  on test.test to 'test'@'%';//授权test库中的test表的select和insert权限给test用户
grant all  on test.test to 'test'@'%';//授权test库中的test表的所有权限给test用户
grant all  on test.* to 'test'@'%';//授权test库中所有表的所有权限给test用户

注意:

以上命令不能给授权的用户的授权权限,如果需要让该用户可以授权,那么需要使用以下命令:

grant all  on test.* to 'test'@'%' with grant option;//授权test库中所有表的所有权限给test用户,并且该用户可以授权

撤销用户权限

revoke privilege on databasename.tablename from 'username'@'host';

参数解释同上。

例如:

revoke all on test.* from 'zhangmiaolin'@'%';

注:

假如在给用户'zhangmiaolin'@'%'授权的时候是这样的(或类似的):grant select on test.* to 'zhangmialin'@'%',则在使用revoke select on *.* from 'zhangmialin'@'%';命令并不能撤销该用户对test数据库中所有表的SELECT 操作。相反,如果授权使用的是grant select on *.*  to 'zhangmialin'@'%';则revoke select on test.* from 'zhangmiaolin'@'%';命令也不能撤销该用户对test数据库中所有表的select权限。

删除用户

drop user 'username'@'host';

更改密码

set password for 'username'@'host' = password('newPassword');

如果是当前用户:

set password = password("new password")

例如:

set password for 'zhangmiaolin'@'%' = password('123456');