一、查询用户
[(none)]>select user,host from mysql.user;
+---------------+--------------+
| user | host |
+---------------+--------------+
| root | 192.168.31.1 |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+--------------+
5 rows in set (0.00 sec)
二、创建用户
-
方法一 create user (推荐)
1)创建用户zhangsan不设置密码 [(none)]>create user zhangsan@'localhost'; Query OK, 0 rows affected (0.25 sec) 2)创建用户lisi设置密码为:123456 [(none)]>create user lisi@'localhost' identified by '123456';
-
方法二 insert into mysql.user
[(none)]>insert into mysql.user(user,host,authentication_string) values('wangwu','localhost',password('123456'));
直接在mysql库的user表中插入一条记录,这种方法使用较少,而且这种方法在设置了严格的sql-mode以后,无法使用。
注意:如果当前mysql数据库的sql-mode设置为了严格检查(如TRADITIONAL),则无法使用上述方法插入数据,如果sql-mode已经设置为严格检查,使用上述语句时可能会出现类似错误:“ERROR 1364 (HY000): Field ‘ssl_cipher’ doesn’t have a default value”。
-
方法三
[(none)]>grant all on *.* to lyh@localhost identified by '123456';
授权时,若对应用户不存在,那么mysql会自动创建对应用户。但在 mysql 最新版本中,如此操作不会创建用户,授权与创建用户功能分离了。
三、删除用户
-
方法一 delete (不推荐)
[(none)]>delete from mysql.user where user='zhangsan';
使用delete语句删除mysql.user表中的用户对应的记录,但是使用此方法会有相关信息残留。比如某些数据库的权限已经授权给了‘zhangsan@localhost’用户,那么,在 mysql.db 表中,“zhangsan@localhost"用户对应的权限将不会被删除,当管理员想要再次创建了"zhangsan@localhost"用户时,则会出现问题,如果管理员想要使用create user命令再次创建"zhangsan@localhost”,可能会出现如下错误:
[(none)]>create user zhangsan@localhost; ERROR 1396 (HY000): Operation CREATE USER failed for 'zhangsan'@'localhost'
出现上述错误的原因有可能就是之前使用 delete 语句删除过同名账户,此时,有两种方法可以解决上述问题:
方案一:
删除 mysql.db 表中用户残留的权限数据后,使用 flush privileges 命令刷新即可,其实就是将用户残留的数据删除干净(相当于使用 drop user 命令删除了用户)。方案二:
使用grant命令授权"zhangsan@localhost"用户能够访问任意数据库即可,如果授权用户的数据库与原来残留的权限所对应的数据库不是同一个库,残留的权限将会被新创建的"zhangsan@localhost"用户所获得的,因为新用户与旧用户的名称相同,所以新的"zhangsan@localhost"用户会继承被删除同名用户的权限,当然,是在残留权限对应的库与新授权的数据库不为同一个库的时候。方案三:
重新执行一遍 drop user zhangsan@localhost。 -
方法二 drop user (推荐)
[(none)]>drop user lisi@localhost;
此方法将会同时删除mysql.user表与mysql.db表中的数据,也就是说,用户与用户对应的所有权限将被删除。
使用drop user命令不会出现使用delete语句删除用户时的情况,但是如果为了保留用户的权限,也可以选择使用delete语句删除对应记录。
四、重命名用户
将zhangsan重命名为ermazi
[(none)]>rename user zhangsan@'localhost' to ermazi'localhost';
五、修改用户密码
修改用户密码的方法 以及 忘记root用户密码的解决方法 可以参考如下文章。
六、用户授权管理
管理用户授权的方法可以参考如下文章。