MySQL中的用户创建与权限管理怎么实现

49次阅读
没有评论

共计 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 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计4016字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)