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的主机登录访问此数据库
查看用户拥有哪些权限可以使用
示例
-- 创建一个名为'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';
修改权限
示例
修改密码
可以 root 用户登录后,修改 mysql 数据库中的 user 表中的 authentication_string 字段。
update mysql.user set authentication_string=password('新密码') where user='用户名' and host='访问主机';
-- 改完user表以后要刷新权限
flush privileges;
或者用 set password
命令来修改密码
远程登录
如果向在一个 Ubuntu 中使用 MySQL 命令远程连接另外一条 MySQL 服务器的话,通过以下方式即可完成。此方法了解即可,在实际生产环境中不要使用。
修改 /etc/mysql/mysql.conf.d/mysqld.cnf
文件,给 bind-addr = 127.0.0.11
行加上注释 #,然后运行 sudo service mysql restart
重启 MySQL。
在另一台 Ubuntu 中进行连接测试
删除账户
两种方式,一种是直接改 mysql.user 表
一种是使用 drop
命令