MySQL学习笔记:进程关系-配置文件-socket

前言

  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值