MySQL权限角色的演进

这是学习笔记的第 1949 篇文章


 

MySQL提供的网络访问模式,主要提供了socketTCP/IP两类,并且对于每个实例,只能对应一个端口。

在   PerconaMariaDB分支中有一个新特性是对于连接数的额外支持,可以配置extra_portextra_max_connections,在连接数已经溢出的情况下连接到MySQL

3.2.1 socket连接

socket是一种特殊的文件,也叫做套接字,是应用层与TCP/IP协议族通信的中间软件抽象层.

Socket连接可以理解为服务端的连接,也是MySQL默认使用socket方式连接,这个也是DBA在管理中,如果是在服务端可以使用mysql命令即可连接到数据库的一个原因。mysql服务启动的时候,会去my.cnf配置文件中查找socket文件的路径,即socket文件的生成目录在[mysqld]上指定,如果没有则默认是/tmp/mysql.sock,使用的默认端口为3306

或者也可以在mysql命令中指定socket路径,比如

  mysql --socket=/data/mysql_3306/tmp/mysqld.sock -uroot -p[password] -P3306

3.2.2 TCP/IP连接

TCP/IP 连接可以理解为客户端的通用连接方式,它是建立一个基于网络的连接请求,我们对于开发同学所开放的主要是基于TCP/IP方式的连接方式。

使用mysql命令的方式,可以参考;

mysql -h[host]  -u[username] -p[password] -P[port] 

3.2.3 MySQL访问模式的演进

MySQL的访问模式在版本演进中也在逐步发生变化,通常来说,MySQL访问模式是基于用户+主机的方式,而真正的数据是在database里面,和Oracle里面的user schema是一个量级的,可以认为用户是权限的载体,而数据库是数据的宿主,用户和数据库关系如下:

640?wx_fmt=png


而在MySQL 8.0的改进使用了角色。

640?wx_fmt=png


如果要对用户授权,一个通用的MySQL 授权语句如下:

grant select on mytest.* to dev_user_ro@'192.168.6.%' identified by 'mypassword';

注:5.6开始标准授权语句修正为先创建用户然后再授权

用户名,按照多级划分的方式,可以按照“环境_服务名_权限标示”的格式进行命名:

(1) 环境

 “环境”一般分为生产环境和测试环境,生产环境的用户名以“srv_”开头,测试环境的用户名以“dev_”开头。

(2) 服务名

用以标示这个数据库用户所连接的服务。

(3)  权限标示

用于进行用户权限类型的标示,可以分为三种权限:只读,基本读写,高级读写,分别用 ro, rwl, rwh 来表示,一般来说这三种权限的分类如下:

只读用户 ro,只有 select 权限;

基本读写用户 rwl,除 ro 的权限外,还有 insert,update,delete,exec 等权限;

高级读写用户 rwh,除 rwl 的权限外,还有 create, drop, alter 等权限。





640?


猜你喜欢

转载自blog.csdn.net/weixin_36250635/article/details/89369211