数据库用户管理及授权
Posted 阳光小王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库用户管理及授权相关的知识,希望对你有一定的参考价值。
数据库用户管理及授权
mysql中常见的新新六种约束
主键约束 | primary key |
---|---|
外键约束 | foreign key |
非空约束 | not null |
唯一性约束 | unique key |
默认值约束 | default |
自增约束 | auto_increment |
数据库用户管理
新建用户
create user '用记名'@'来源地址' identified by password '密码';
'用户名':指定将创建的用户名
'来源地址':指定新创建的用户可在哪些主机上登录;允许任意主机登录可用通配符%
'密码':如果使用明文密码,直接输入密码,插入到数据库时由MySQL自动加密
若使用加密密码,需要先使用select password('密码')获取密文,再在语句中添加 password '密文';
若省略“identified by”部分,则用户的密码将为空(不建议使用)
查看用户信息
use mysql;
#创建后的用户保存在MySQL数据库的user表里
select User,Host,authentication_string from user;
重命名与删除用户
- 重命名用户
rename user 'user'@'localhost' to 'zhangsan'@'%';
#'%'表示任意主机都可以
#将用户名user1改为zhangsan
- 删除用户
drop user 'zhangsan'@'localhost';
修改当前用户登录密码及其他用户密码
- 修改当前用户登录密码
set password=password('123456')
#执行此条命令会把当前MySQL登录密码abc123改为123456
- 修改其他用户登录密码
set password for 'user2'@'localhost' = password('abc123')
#将用户user2的密码123456改为abc123;
忘记root密码的解决方法
- 方法一
#修改/etc/my.cnf配置文件,不使用密码直接登录MySQL
vim /etc/my.cnf
[mysql]
skip-grant-tables
#添加skip-grant-tables,使登录MySQL不使用授权表直接登录
systemctl restart mysqld
#重新启动MySQL
mysql
#使用mysql直接登录
- 方法二
update mysql.user set atthentication_string = password('abc123') where user='root';
#使用update修改root密码
flush privileges;
#刷新数据库
quit
mysql -u root -pabc123
#使用新设的密码登录mysql
-----------------------------------------------------------------------------------------
注意:设置新的密码完成后要把原来/etc/my.cnf配置文件中的skip-grant-tables删除掉,再重新启动mysql服务
数据库用户授权
授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' identified by '密码';
grant语句:用来设置数据库用户的访问权限
#当指定的用户名不存在时,grant会创建新的用户
#当指定的用户存在时,grant用来修改用户信息
---------------------------------------------------------------------------------------------------
#权限列表:列出授权使用的数据库,以逗号分隔,如“select,insert..”'all'表示所有权限,可授权执行任何操作
#数据库名.表名:用于指定授权操作的数据库和表的名称,可以使用通配符“*”,如:kgc.*表示授权操作对象为kgc库里的所有表
#'用户名'@'来源地址':用于指定用户的名称和允许访问客户机的地址,'来源地址'可以用“%”通配符表示所有主机或所有地址
#identified by:用于设置用户连接数据库时所使用的密码字符串,在新建用户时如果省略identified by部分,则用户密码为空
rename user 'test'@'localhost' to 'test'@'%';
#将仅本机修改为所有主机通过通配符%表示
grant all on *.* to 'test'@'%';
#给test用户对所有库中所有表所有可执行操作的权限
查看权限
show grants for 'test'@'%';
#使用grants查看test用户的权限
撤消权限
revoke all on *.* from 'test'@'%';
#撤消test用户对所有库所有表拥有的权限
-----------------------------------------------
show grants for 'test'@'%';
#USAGE权限只能用于数据库登录,不能执行任何操作,USAGE权限不能被收回-->revoke不能删除用户
flush privileges;
#刷新权限
以上是关于数据库用户管理及授权的主要内容,如果未能解决你的问题,请参考以下文章