Skip to content

MySQL 用户管理

简介了用户的创建、授权、删除,以及一点关于远程登录的内容。

root 账户拥有最高的权限。在生产环境中,绝对不可以使用 root 账户连接数据库,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作。(注意:进行账户操作需要用 root 用户)

查看所有用户

所有用户及权限信息存储在 mysql 数据库中的 user 表中,运行如下命令进行查看部分字段

use mysql;
select host,user,authentication_string from user;
-- host 字段表示允许访问的主机
-- user 字段表示用户名
-- authentication_string 字段为加密后的密码

创建用户与授权

创建用户用如下命令

grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';
-- 访问主机可以设置成localhost或具体的ip,也可以设置成'%'表示可以使用任何ip的主机登录访问此数据库

查看用户拥有哪些权限可以使用

show grants for '用户名'@'访问主机';
-- 查看 root 用户的权限
show grants for root@localhost;

示例

-- 创建一个名为'xiaoming'的账户,密码为'123456',只能本地访问,只能对jing_dong数据库里的所有表进行读操作
grant select on jing_dong.* to 'xiaoming'@'localhost' identified by '123456';
-- 创建一个名为'xiaohong'的账户,密码为'abc',可以在任意电脑进行访问,且对jing_dong数据库拥有所有的权限
grant all privileges on jing_dong.* to 'xiaohong'@'%' identified by 'abc';

修改权限

grant 新权限名称 on 数据库 to '用户名'@'访问主机' with grant option;

示例

-- 为账户xiaoming增加插入权限
grant select,insert on jing_dong.* to xiaoming@localhost with grant option;

修改密码

可以 root 用户登录后,修改 mysql 数据库中的 user 表中的 authentication_string 字段。

update mysql.user set authentication_string=password('新密码') where user='用户名' and host='访问主机';
-- 改完user表以后要刷新权限
flush privileges;

或者用 set password 命令来修改密码

set password for '用户名'@'访问主机' = password('新密码');

远程登录

如果向在一个 Ubuntu 中使用 MySQL 命令远程连接另外一条 MySQL 服务器的话,通过以下方式即可完成。此方法了解即可,在实际生产环境中不要使用。

修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件,给 bind-addr = 127.0.0.11 行加上注释 #,然后运行 sudo service mysql restart 重启 MySQL。

在另一台 Ubuntu 中进行连接测试

mysql -h'IP地址' -u'用户名' -p'密码'

删除账户

两种方式,一种是直接改 mysql.user 表

delete from user where user='用户名' and host='主机';
-- 改完user表以后要刷新权限
flush privileges;

一种是使用 drop 命令

drop user '用户名'@'主机';