共计 4016 个字符,预计需要花费 11 分钟才能阅读完成。
这篇文章主要讲解了“MySQL 中的用户创建与权限管理怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“MySQL 中的用户创建与权限管理怎么实现”吧!
一、用户管理
在 mysql 库里有个 user 表可以查看已经创建的用户
1. 创建 MySQL 用户
注意:MySQL 中不能单纯通过用户名来说明用户,必须要加上主机。如 hhy@10.1.1.1
基本语法:
mysql create user 用户名 @ 被允许连接的主机名称或主机的 IP 地址 identified by 用户密码
mysql select user,host from mysql.user;
案例:创建一个 MySQL 账号,用户名:hhy,用户密码:123
mysql create user hhy @ localhost identified by 123
/* 或 */
mysql create user hhy @ 127.0.0.1 identified by 123
案例:创建一个 MySQL 账号(要求开通远程连接),主机 IP 地址:192.1668.44.110,用户名:test,用户密码:123
mysql create user test @ 192.1668.44.110 identified by 123
测试:在 IP 地址为 192.168.44.110 的主机上
# yum install mysql -y
# mysql -h 192.168.44.110 -P 3306 -uharry -p
Enter password:123
选项说明:192.168.44.110:MySQL 服务器端的 IP 地址
yum 安装 mysql:代表安装的是 MySQL 的客户端
yum 安装 mysql-server:代表安装的是 MySQL 的服务器端
案例:创建一个 MySQL 账号(要求开通远程连接),主机 IP 的网段:10.1.1.0,用户名:jack,用户密码:123
create user jack @ 192.168.44.% identified by 123
案例:创建一个 MySQL 账号(要求开通远程连接),要求面向所有主机开放,用户名:root,用户密码:123
create user root @ % identified by 123
2. 删除 MySQL 用户
基本用户:
mysql drop user 用户名 @ 主机名称或主机的 IP 地址
特别说明:
如果在删除用户时没有指定主机的名称或主机的 IP 地址,则默认删除这个账号的所有信息。
案例:删除 hhy 这个账号
drop user hhy @ localhost
案例:删除 jack 这个账号
drop user jack @ 192.168.44.%
案例:创建两个 harry 账号(localhost/10.1.1.23),然后删除其中的某个
mysql create user harry @ localhost identified by 123
mysql create user harry @ 192.168.44.110 identified
mysql drop user harry @ 192.168.44.110
删除 MySQL 账号的另外一种方式
mysql delete from mysql.user where user= root and host= %
mysql flush privileges;
3. 修改 MySQL 用户
特别说明:MySQL 用户重命名通常可以更改两部分,一部分是用户的名称,一部分是被允许访问的主机名称或主机的 IP 地址。
基本语法:
mysql rename user 旧用户信息 to 新用户信息;
案例:把用户’root’@ %‘更改为’root’@‘10.1.1.%’
mysql rename user root @ % to root @ 10.1.1.%
案例:把’harry’@‘localhost’更名为’hhy’@‘localhost’
mysql create user tom @ localhost identified by 123
mysql rename user tom @ localhost to hhy @ localhost
使用 update 语句更新用户信息
mysql update mysql.user set user= hhy ,host= localhost where user= tom and host= localhost
mysql flush privileges;
二、权限管理 1. 权限说明
所有权限说明
USAGE 无权限, 只有登录数据库, 只可以使用 test 或 test_* 数据库
ALL 所有权限
以下权限为指定权限
select/update/delete/super/replication slave/reload...
with grant option 选项表示允许把自己的权限授予其它用户或者从其他用户收回自己的权限
默认情况下,分配权限时如果没有指定 with grant option,代表这个用户不能下发权限给其他用户,但是这个权限分配不能超过自身权限。
2. 权限保存位置(了解)
mysql.user: 所有 mysql 用户的账号和密码,以及用户对全库全表权限(*.*)
mysql.db : 非 mysql 库的授权都保存在此 (db.*)
mysql.table_priv : 某库某表的授权 (db.table)
mysql.columns_priv : 某库某表某列的授权 (db.table.col1)
mysql.procs_priv : 某库存储过程的授权
3. 给用户授权
创建数据库表:
create database java;
use java;
create table tb_student(
id mediumint not null auto_increment,
name varchar(20),
age tinyint unsigned default 0,
gender enum(男 , 女),
address varchar(255),
primary key(id)
) engine=innodb default charset=utf8;
insert into tb_student values (null, 刘备 ,33, 男 , 湖北省武汉市
insert into tb_student values (null, 貂蝉 ,18, 女 , 湖南省长沙市
insert into tb_student values (null, 关羽 ,32, 男 , 湖北省荆州市
insert into tb_student values (null, 大乔 ,20, 女 , 河南省漯河市
insert into tb_student values (null, 赵云 ,25, 男 , 河北省石家庄市
insert into tb_student values (null, 小乔 ,18, 女 , 湖北省荆州市
基本语法:
mysql grant 权限 1, 权限 2 on 库. 表 to 用户 @主机
mysql grant 权限 (列 1, 列 2,...) on 库. 表 to 用户 @主机
库. 表表示方法:*.* 代表所有数据库的所有数据表,db_itheima.* 代表 db_itheima 数据库中的所有数据表,db_itheima.tb_admin,代表 db_itheima 数据库中的 tb_admin 表
案例:给 thhy 账号分配 java 数据库的查询权限
mysql grant select on java.* to hehanyu @ 192.168.44.%
mysql flush privileges;
案例:给 hehanyu 账号分配 java.tb_student 数据表的权限(要求只能更改 age 字段)
mysql grant update(age) on java.tb_student to hehanyu @ 192.168.44.%
mysql flush privileges;
案例:添加一个 root@% 账号,然后分配所有权限
create user root @ % identified by 123
grant all on *.* to root @ %
flush privileges;
4. 查询用户权限
查询当前用户权限:
mysql show grants;
查询其他用户权限:
mysql show grants for 用户名称 @ 授权的主机名称或 IP 地址
5. with grant option 选项
mysql grant all on *.* to amy @ 10.1.1.% identified by 123 with grant option;
mysql grant all on *.* to harry @ 10.1.1.% identified by 123
如以上命令所示:amy 拥有下发权限的功能,而 harry 不具备下发权限的功能。
如果 grant 授权时没有 with grant option 选项,则其无法为其他用户授权。
6.revoke 回收权限
基本语法:
revoke 权限 on 库. 表 from 用户;
查看 hehanyu 用户权限
mysql show grants for hehanyu @ 192.168.44.%
撤消指定的权限
mysql revoke update on java.tb_student from tom @ 192.168.44.%
撤消所有的权限
mysql revoke select on java.* from tom @ 192.168.44.%
感谢各位的阅读,以上就是“MySQL 中的用户创建与权限管理怎么实现”的内容了,经过本文的学习后,相信大家对 MySQL 中的用户创建与权限管理怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!