MYSQL访问控制与安全管理

用户账户管理

利用select语句查看mysql数据库的使用者帐号

select user from mysql.user;

1)创建用户帐号

语法格式:

create user <用户名> 【identified by [password] 口令 】

<用户名>:指定创建用户帐号,其格式为‘user -name"@"host name’。这里‘user -name’是用户名,‘host name’为主机名,即用户连接mysql时所在主机的名字。如果在创建的过程中,只给出了账户中的用户名,而没有指定主机名,则主机名会默认为是‘%’,表示一族主机

可选项password:用于指定散列口令,即若使用明文设置口令时,需忽略password关键字;如果不想以明文设置口令,且知道password()函数返回给密码的散列值,则可以在口令设置语句中指定此散列值,但需要加上关键字password

identified by子句:用于指定用户账户对应的口令,若该用户账户无口令,则可省略此子句。

<口令>:指定用户帐号的口令,在identified by 关键字或password关键字之后。给定的口令值可以是只由字母和数字组成的明文,也可以是通过password函数得到的散列值。

create user 'zhangsan'@'localhost' identified by '123'
select password('123') #执行结果 *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
create user 'zhangsan'@'localhost' identified by password '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'

注意:

如果create user语句的使用中,没有为用户指定口令,那么mysql允许该用户可以不使用口令登录系统,然而从安全的角度而言,不推荐这种做法

使用create user语句创建一个用户帐号后,会在系统自身的mysql数据库的user表中添加一条新记录。如果创建的账户已经存在,则语句执行会出现错误。

新创建的用户拥有的权限很少,它们可以登录到mysql,只允许进行不需要权限的操作,如使用show语句查询所有存储引擎和字符集的列表等。

如果两个用户具有相同的用户名和不同的主机名,mysql会将它们视为不同的用户,并允许为这两个用户分配不同的权限集合。

删除用户

语法格式:

drop user<用户名 >,【用户名1】......

注意:

drop user 语句可用于删除一个或多个mysql账户,并撤销其原有权限

使用drop user语句,必须拥有mysql中的mysql数据库的delete权限或全部create user权限

在drop user语句的使用中,如果没有明确地给出账户的主机名,则该主机名会默认为是%

drop user zhangsan@localhost

修改用户帐号

语法格式:

rename user <旧用户> to <新用户>
rename user 'liming'@'localhost' to 'wanghong'@'localhost'

注意:

rename user语句用于对原有mysql账户进行重命名

如果系统中旧帐号不存在或新账户已存在,则语句执行会出现错误

要使用rename user语句,必须拥有mysql中的mysql数据库的update 权限或全局createa user权限

修改用户口令

语法格式:

set password [for <用户名>] = password('新口令') | OLD_password('旧明文口令') | '加密口令值'
​
set password for 'zhangsan'@'localhost'=passwore('456');

for子句:可选项,指定要修改口令的用户

password:表示使用函数password设置新口令,即新口令必须传递到函数password中进行加密

加密口令值:表示已被函数password加密的口令值

select password('hello') #查看hello的散列值

账户权限管理

查看权限语法:

show grants for 'wanghong'@'localhost'

权限的授予

语法:

grant <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]
on <对象> <权限级别> to <用户>
​
其中<用户>的格式
<用户名> [identified by [passowrd] <口令>]
[with grant option]
|max_queries_per_hour <次数>
|max_updates_per_hour <次数>
|max_connections_per_hour <次数>
|max_user_connections <次数>
grant select(student_id,student_name) on db_school.tb_student to 'wanghong'@'localhost'
grant select,update on db_school.tb_student to 'wanghong'@'localhost' identified by '123' 'huang'@'localhost' identifity by '789'
​
grant all on mytest.* to 'wanghong'@'localhost'

权限转移与限制

(1)转移权限

如果在with子句指定为with grant option,则表示to子句中所指定的所有用户都具有自己所拥有的权限授予其他用户的权利,而不论其他用户是否拥有该权限

grant select,update on mytest.student to 'wang'@'localhost' identified by '123' with grant option

(2)限制权限

在with子句中的with关键字后面紧跟的是max_queries_per_hour等,表示限制

grant select on mytest.student to 'wang'@'localhost' with max_queries_per_hour

权限的撤销

可以使用revoke语句撤销一个用户的权限,此用户不会被删除

语法:

revoke <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]....
on <对象> <权限名> from <用户1>.....
revoke all privileges ,grant option from user <用户>....
revoke select on mytest.students from 'xiaoming'@'localhost'

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海屿鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值