五.数据库权限管理

  1. 登录和退出MySQL
    远程登陆:
    客户端语法:mysql -u 用户名 -p 密码 -h ip地址 -P端口号:如果没有改端口号就不用-P指定端口
    注:# mysql -h192.168.246.253 -P 3306 -uroot -pqf123

如果报错进入server端服务器登陆mysql执行:

mysql> use mysql
mysql> update user set host = '%' where user = 'root';
mysql> flush privileges;

.# mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -e 'show databases;'
-h 指定主机名 【默认为localhost】
-大P MySQL服务器端口 【默认3306】
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
-e 接SQL语句,可以写多条拿;隔开
.# mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -D mysql -e 'select host from user;'
此处 -D mysql为指定登录的数据库
修改端口rpm安装:vim /etc/my.cnf
在到【mysql】标签下面添加port=指定端口。重启服务

2.创建用户

方法一:CREATE USER语句创建
mysql> create user tom@'localhost' identified by 'qf@123'; #创建用户为tom,并设置密码。
mysql> FLUSH PRIVILEGES; #更新授权表
注:
identified by :设置密码
在用户tom@' ' 这里 选择:
%:允许远程登陆。也可以指定某个ip,允许某个ip登陆。也可以是一个网段。
%:包括所有的主机,不包括本机(127.0.0.1),但是不包括(localhost)
==客户端主机 % 所有主机
192.168.246.% 192.168.246.0网段的所有主机
192.168.246.252 指定主机
localhost 指定主机

方法二: GRANT语句创建 ---授权。
mysql> GRANT ALL ON . TO 'user3'@’localhost’ IDENTIFIED BY 'Qf@123';
#权限 库名.表名 账户名 设置密码
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

修改远程登陆:
将原来的localhost修改为%或者ip地址
mysql> use mysql
mysql> update user set host = '192.168.246.%' where user = 'user3';
mysql> FLUSH PRIVILEGES;

3.刷新权限

修改表之后需要刷新权限
方式1:
mysql > flush privileges;

使用命令授权:grant
也可创建新账户(不过后面的版本会移除这个功能,建议使用create user)
语法格式:
grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' IDENTIFIED BY 'Qf@123';
==权限列表 all 所有权限(不包括授权权限)
select,update
select, insert
==数据库.表名 . 所有库下的所有表 Global level
web.* web库下的所有表 Database level
web.stu_info web库下的stu_info表 Table level
给刚才创建的用户tom授权:
mysql> grant select,insert on . to 'tom'@'localhost';
mysql> FLUSH PRIVILEGES;

4.查看权限

查看权限
1.看自己的权限:
mysql> SHOW GRANTS\G
*************************** 1. row ***************************
Grants for root@%: GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION
2.看别人的权限:
mysql> SHOW GRANTS FOR tom@'localhost'\G
*************************** 1. row ***************************
Grants for tom@localhost: GRANT SELECT, INSERT ON . TO 'tom'@'localhost'

5.修改密码

===root修改自己密码
方法一:
.# mysqladmin -uroot -p'123' password 'new_password' //123为旧密码
案例:
.# mysqladmin -uroot -p'qf123' password 'qf@123';
方法二:
mysql>SET PASSWORD='new_password';
==root修改其他用户密码
mysql> use mysql
mysql> SET PASSWORD FOR user3@'localhost'='new_password'
用户 = 新密码

6.删除用户

方法一:DROP USER语句删除
DROP USER 'user3'@'localhost';
方法二:DELETE语句删除
DELETE FROM mysql.user WHERE user='tom' AND host='localhost';
更新授权表: FLUSH PRIVILEGES;

7.权限控制机制

四张表:user db tables_priv columns_priv
1.用户认证
查看mysql.user表
2.权限认证
以select权限为例:
1.先看 user表里的select_priv权限
Y:不会接着查看其他的表 拥有查看所有库所有表的权限
N:接着看db表
2.db表: 存储了某个用户对一个数据库的权限。
Y:不会接着查看其他的表 拥有查看所有库所有表的权限
N:接着看tables_priv表
3.tables_priv表:可以对单个表进行权限设置
table_priv:如果这个字段的值里包括select 拥有查看这张表所有字段的权限,不会再接着往下看了
table_priv:如果这个字段的值里不包括select,接着查看下张表还需要有column_priv字段权限
4.columns_priv:针对数据列设置操作权限.
column_priv:有select,则只对某一列有select权限
没有则对所有库所有表没有任何权限
注:其他权限设置一样。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1,MySQL权限体系 mysql 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有...
    不排版阅读 4,492评论 0 4
  • 用了mysql好多年,很少关注mysql自带库,自然也不知道这个库里存放些什么,在看《MySQL排错指南》时看到它...
    灼灼2015阅读 5,871评论 1 3
  • 一. MySQL密码的恢复方法之一 如果忘记了MySQL的root密码,可以用以下方法重新设置: 1. KILL掉...
    不排版阅读 3,523评论 0 1
  • 创建数据库 CREATE DATABASE chapter08; 选择数据库 USE chapter08; 创建数...
    叶小溪阅读 4,574评论 0 1
  • 1.远程登录mysql mysql -h ip -u root -p 密码 2.创建用户 格式:grant 权限 ...
    shadow雨轩阅读 4,457评论 0 2

友情链接更多精彩内容