数据库用户管理及授权

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;
#刷新权限

以上是关于数据库用户管理及授权的主要内容,如果未能解决你的问题,请参考以下文章

MySql用户管理:添加用户授权删除用户

在Oracle数据库中如何用sql查询某一个用户名下的某张表里面的数据,select * from 表名 用户名 where id=1

oracle授权表备份用户管理

ORACLE权限管理

用户及组管理

数据库用户管理和授权