这是学习笔记的第1949篇文章
MySQL提供的网络访问模式,主要提供了socket和TCP/IP两类,并且对于每个实例,只能对应一个端口。
在Percona和MariaDB分支中有一个新特性是对于连接数的额外支持,可以配置extra_port和extra_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是一个量级的,可以认为用户是权限的载体,而数据库是数据的宿主,用户和数据库关系如下:
而在MySQL 8.0的改进使用了角色。
如果要对用户授权,一个通用的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来表示,一般来说这三种权限的分类如下:
l只读用户ro,只有select权限;
l基本读写用户rwl,除ro的权限外,还有insert,update,delete,exec等权限;
l高级读写用户rwh,除rwl的权限外,还有create,drop,alter等权限。
领取专属 10元无门槛券
私享最新 技术干货