0
点赞
收藏
分享

微信扫一扫

MySQL进程关系-配置文件-socket通信

兽怪海北 2023-04-27 阅读 102

前言

  1. MySQL的进程间的关系是怎样的?
  2. MySQL配置文件各参数的含义?
  3. 配置文件和进程间又有什么关系呢?
  4. MySQL中通信方式又是怎么的呢?

带着这几个问题,我们一起来探讨探讨!

MySQL进程间的关系

首先,我们先来看看MySQL中有哪些进程 在这里插入图片描述 再用pstree看看他们之间的关系 在这里插入图片描述 可以发现mysql_safe是mysqld的父进程,mysqld下又起了很多的mysqld线程

mysqld进程

是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。mysqld可以读取配置文件中的[mysqld]的部分

mysql_safe进程

  1. mysqld_safe,其实是一个Shell脚本,这种方式启动除了会加载MySQL配置(如:/etc/my.cnf)中的[mysqld]和[server]组下的参数内容之外,为了兼容老版本,还会加载[safe_mysqld]组下的内容
  2. 执行脚本mysqld_safe时,脚本中会去调用mysqld启动mysqld和monitor,mysqld两个进程,monitor即监视的意思,这样如果mysql服务挂了,那么mysqld_safe会重新启动mysqld进程
  3. mysqld_safe是mysqld的父进程,mysqld挂了,会再起一个mysqld进程。
  4. msyqld_safe挂了,mysqld会变成孤儿进程,这时在杀死mysqld进程,不会在起一个mysqld进程。

配置文件

[root@master mysql]# cat /etc/my.cnf
[mysqld_safe]

[client]
socket=/data/mysql/mysql.sock

[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8mb4
[mysql]
auto-rehash
prompt=\u@\d \R:\m  mysql> 

socket=/data/mysql/mysql.sock-----本机mysql和mysqld使用的文件socket通信时的共享文件 socket=/data/mysql/mysql.sock-----指定文件socket共享文件存放的位置 port = 3306-----mysql服务默认的端口号3306 open_files_limit = 8192-----mysql最大能够打开的文件数8192 innodb_buffer_pool_size = 512M-----innodb存储引擎的缓存池的大小 character-set-server=utf8mb4----mysql服务器端使用的字符集为utf8mb4 auto-rehash-----进入mysql敲命令的时候允许自动补齐 prompt=\u@\d \R:\m mysql>-----指定mysql内的显示格式,类似于linux里的第一提示符$PS1

配置文件与进程间的关系

在这里插入图片描述 配置文件其实就是给进程传递参数的 [mysqld_safe]为mysql_safe进程传递参数 [client]和[mysql]为mysql传递参数 [mysqld]为mysql传递参数

socket

socket:槽,实现进程与进程之间通信的方式。

类型:文件socket、网络socket

本机内mysql与mysqld进程间的通信--文件socket

实现一台电脑里的不同进程之间通信的文件

注释/etc/my.cnf的[client] socket字段

[client]
#socket=/data/mysql/mysql.sock

退出保存,刷新服务,再次尝试连接

[root@mysql chen]# mysql -uroot -p"Sanchuang123#"
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

发现mysql -uroot -p"Sanchuang123#"无法连接上 原因:找不到socket共享文件,连接时会默认加载配置文件/etc/my.cnf,找不到回去/tmp/mysql.sock里去找。

[root@mysql chen]# mysql -uroot -p"Sanchuang123#" -S /data/mysql/mysql.sock
mysql.sock       mysql.sock.lock  

-S 指定socket共享文件的位置,又能连接上了

总结

说明本机mysql与mysqld进程间采用文件socket的方式进行通信,首先mysql进程会读取配置文件里的[client]字段,如果未发现共享文件,则无法进行通信 -S 选项能够告诉mysql进程文件socket的位置,指定位置后,就能够正常通信了!

不同ip地址主机间的通信--网络socket

格式:ip+port 如:192.168.10.130:3306

实现不同ip地址主机之间的通信的

网络socket实现linux间通信

我们想让mysql2连接到mysql1上去,能否成功呢?

[root@mysql2 ~]# mysql -uroot -p'Sanchuang123#' -h 192.168.31.153
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1130 (HY000): Host '192.168.31.111' is not allowed to connect to this MySQL server

为什么无法连接上?

root@localhost -->root用户只能在本机登录 因为在mysql中默认root用户只允许本机登录,root用户就好像是一个土皇帝一样!不允许其他ip地址远程登录root用户

如何连接上?

1.服务端创建用户,并授权用户

root@chen 11:44  mysql>create user 'felix'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

felix @‘%’表示可以从任意ip地址连接到felix用户

create user 创建用户

identified by 创建密码

root@chen 11:45  mysql>grant all on *.* to 'felix'@'%';

grant 是mysql里的授权的命令

all 代表授予所有的权限 select insert update delete等

第一个*表示库,第二个代表表

to ‘felix’@‘%’ 给具体的用户

2.客户机连接服务端

[root@mysql2 ~]# mysql -ufelix -p"123456" -h 192.168.31.153

-h 连接服务器端的ip地址

-P 3306指定连接端口号,不指定-p则默认为3306

3.服务器端查看有哪些用户连接过来了

root@chen 11:50  mysql>show processlist; #查看有哪些人连接到mysql里了
+----+-------+----------------------+------+---------+------+----------+------------------+
| Id | User  | Host                 | db   | Command | Time | State    | Info             |
+----+-------+----------------------+------+---------+------+----------+------------------+
|  6 | root  | localhost            | chen | Query   |    0 | starting | show processlist |
|  7 | felix | 192.168.31.111:40770 | NULL | Sleep   |  911 |          | NULL             |
+----+-------+----------------------+------+---------+------+----------+------------------+

网络socket实现linux和windows间通信

工具: SQL yog 在这里插入图片描述 SQL主机地址:需要远程连接服务器的ip地址 用户名:远程主机授权的用户felix,默认是不能登录root用户的哦! 密码:授权的密码 端口号:默认3306 在这里插入图片描述 连接成功!

感谢读者的阅读,希望对您有帮助!

举报

相关推荐

0 条评论