MySQL Study之--MySQL启动错误“/var/lib/mysql/mysql.sock”

本文记录了解决Percona Server 5.6在Red Hat EL 6.4系统中启动失败的问题,详细介绍了如何排除因默认MySQL服务冲突导致的“/var/lib/mysql/mysql.sock”错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL Study之--MySQL启动错误“/var/lib/mysql/mysql.sock”
系统环境:
          操作系统: RedHat EL6.4(64)
        MySQL:      Percona Server 5.6

错误现象


查看数据库的启动
[root@localhost ~]# netstat -an |grep :3306
tcp        0      0 :::3306                     :::*                        LISTEN      
[root@localhost ~]# chkconfig --list |grep mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

重新启动Server:
[root@localhost mysql]# service mysql start
Starting MySQL (Percona Server).....................................................................................................The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).[FAILED]

查看错误日志:
[root@rh64 ~]# more /var/log/mysqld.log 
150908 16:01:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2015-09-08 16:01:49 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defa
ults_for_timestamp server option (see documentation for more details).
2015-09-08 16:01:49 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25-73.1) starting as process 3349 ...
2015-09-08 16:01:49 3349 [Note] Plugin 'FEDERATED' is disabled.
2015-09-08 16:01:49 3349 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-09-08 16:01:49 3349 [Note] InnoDB: The InnoDB memory heap is disabled
2015-09-08 16:01:49 3349 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-09-08 16:01:49 3349 [Note] InnoDB: Memory barrier is not used
2015-09-08 16:01:49 3349 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-09-08 16:01:49 3349 [Note] InnoDB: Using Linux native AIO
2015-09-08 16:01:49 3349 [Note] InnoDB: Not using CPU crc32 instructions
2015-09-08 16:01:49 3349 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-09-08 16:01:49 3349 [Note] InnoDB: Completed initialization of buffer pool
2015-09-08 16:01:49 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:49 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:49 3349 [Note] InnoDB: Retrying to lock the first data file
2015-09-08 16:01:50 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:50 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:51 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:51 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:52 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:52 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:53 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:53 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:54 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:54 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:55 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
2015-09-08 16:01:55 3349 [Note] InnoDB: Check that you do not already have another mysqld process using the sam
e InnoDB data or log files.
2015-09-08 16:01:56 3349 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11

在安装Linux系统时,系统自带了mysql server,卸载系统自带mysql server;但系统启动是,会自动启动原来的mysql server,导致启动后面安装的Percona Server无法启动,关闭mysql server在系统的自动启动。
[root@localhost ~]# chkconfig --list |grep mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off


[root@localhost ~]# chkconfig --level 235  mysql off
[root@localhost ~]# service mysql stop
MySQL (Percona Server) PID file could not be found![FAILED]

[root@localhost ~]# chkconfig --list |grep mysql
mysql           0:off   1:off   2:off   3:off   4:on    5:off   6:off

[root@localhost ~]# netstat -an |grep :3306
tcp        0      0 :::3306                     :::*                        LISTEN

重新启动系统:
[root@rh64 ~]# service mysql start
Starting MySQL (Percona Server)..[  OK  ]

[root@rh64 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

mysql server正常启动!

查看系统信息:

[root@rh64 ~]# ls -l /var/lib/mysql
total 110620
-rw-rw----. 1 mysql mysql       56 Sep  6 18:08 auto.cnf
-rw-rw----. 1 mysql mysql 12582912 Sep  8 16:18 ibdata1
-rw-rw----. 1 mysql mysql 50331648 Sep  8 16:18 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Sep  6 18:06 ib_logfile1
drwx------. 2 mysql mysql     4096 Sep  6 18:06 mysql
srwxrwxrwx. 1 mysql mysql        0 Sep  8 16:18 mysql.sock
drwx------. 2 mysql mysql     4096 Sep  6 18:06 performance_schema
-rw-rw----. 1 mysql mysql        5 Sep  8 16:18 rh64.pid
-rw-r--r--. 1 root  root       293 Sep  6 18:07 RPM_UPGRADE_HISTORY
-rw-r--r--. 1 mysql mysql      293 Sep  6 18:07 RPM_UPGRADE_MARKER-LAST
drwx------. 2 mysql mysql     4096 Sep  6 18:06 test

查看系统日志:
[root@rh64 ~]# tail /var/log/mysqld.log 
2015-09-08 16:18:10 2370 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.25-73.1 started; log sequence number 1626017
2015-09-08 16:18:10 2370 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work.
2015-09-08 16:18:10 2370 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.
2015-09-08 16:18:10 2370 [Note] Server hostname (bind-address): '*'; port: 3306
2015-09-08 16:18:10 2370 [Note] IPv6 is available.
2015-09-08 16:18:10 2370 [Note]   - '::' resolves to '::';
2015-09-08 16:18:10 2370 [Note] Server socket created on IP: '::'.
2015-09-08 16:18:10 2370 [Note] Event Scheduler: Loaded 0 events
2015-09-08 16:18:10 2370 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.6.25-73.1'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Percona Server (GPL), Release 73.1, Revision 07b797f
<think>好的,我需要解决用户关于MySQL Server 8.0.35启动socket文件符号链接的问题。首先,用户提到在启动过程中,socket文件从/var/lib/mysql/mysql.sock符号链接到/var/run/mysqld/mysqld.sock,想了解相关信息。 首先,我应该回忆一下MySQL的默认配置。通常,MySQLsocket文件默认位置在/var/lib/mysql/mysql.sock,但有时候可能被配置到其他位置,比如/var/run/mysqld/mysqld.sock。这取决于配置文件中的设置,比如my.cnf中的[mysqld]部分是否有socket的指定。 接下来,符号链接的问题。用户观察到有符号链接,这可能是因为某些系统或安装脚本自动创建了符号链接,以保持兼容性或满足不同应用程序的需求。例如,有些程序可能期望socket文件在/var/run/mysqld/mysqld.sock,而MySQL默认生成在/var/lib/mysql/mysql.sock,所以需要符号链接来桥接这两个位置。 然后,我需要查看用户提供的引用内容。引用[1]提到创建了systemd服务的符号链接,这可能与启动服务有关,但用户的问题是关于socket文件的。引用[2]涉及初始化数据库的命令,其中指定了datadir为/data/mysql,可能影响socket的位置。引用[3]是关于配置字符集的,可能与socket无关,但需要检查是否有socket配置在my.cnf中。引用[4]是关于设置sort_buffer_size的会话变量,也不直接相关,但可能用户的其他配置影响。 接下来,应该考虑MySQL启动流程。当mysqld启动时,它会读取配置文件(如/etc/my.cnf),并根据其中的配置设置socket文件的位置。如果配置文件中没有明确指定socket参数,MySQL会使用默认值。用户的情况可能是配置文件中指定了socket=/var/run/mysqld/mysqld.sock,导致MySQL生成在该位置,而实际数据目录在/var/lib/mysql,所以需要符号链接。 另外,系统服务文件(如mysqld.service)可能会影响socket的位置。在systemd服务文件中,可能有配置指定了RuntimeDirectory或相关参数,导致生成socket文件在/var/run下,从而需要符号链接到数据目录的位置。 还需要检查权限问题,确保MySQL用户(如mysql)有权限访问/var/run/mysqld目录,否则启动时可能无法创建socket文件。符号链接的创建可能是安装过程中的一部分,或者由启动脚本处理。 最后,用户可能需要验证配置文件和实际启动时的参数,确认socket路径是否正确,并检查符号链接是否存在以及是否正确指向。如果符号链接未正确创建,可能导致连接问题,比如应用程序无法找到socket文件。 总结来说,回答需要涵盖配置文件中的socket设置、符号链接的创建原因和方法、权限问题以及如何验证配置的正确性。同时,根据用户提供的引用,可能需要提到初始化数据库时的datadir设置对socket位置的影响,以及通过修改my.cnf来调整socket路径。</think>MySQL Server 8.0.35启动socket文件符号链接的配置主要涉及以下关键点: ### 1. socket文件默认路径 - **默认位置**:MySQL默认将socket文件$mysql.sock$存储在数据目录(如`/var/lib/mysql`) - **系统级覆盖**:某些Linux发行版或安装方式可能通过配置文件强制修改路径为`/var/run/mysqld/mysqld.sock`[^3] ### 2. 符号链接的创建机制 - **systemd服务控制**:通过`mysqld.service`单元文件中的配置,可能包含类似以下指令: ```ini RuntimeDirectory=mysqld ExecStartPre=/bin/mkdir -p /var/run/mysqld ExecStartPre=/bin/chown mysql:mysql /var/run/mysqld ``` 这会强制MySQL启动时使用指定路径[^1] - **启动脚本逻辑**:部分MySQL安装包会在初始化脚本中添加符号链接命令: ```bash ln -sf /var/run/mysqld/mysqld.sock /var/lib/mysql/mysql.sock ``` ### 3. 配置验证方法 - **查看当前配置**: ```sql SHOW VARIABLES LIKE 'socket'; ``` 该命令会显示MySQL实际使用的socket路径 - **配置文件优先级**: ```bash $ mysql --help | grep "Default options" ``` 可查看MySQL加载配置文件的顺序,通常为: ``` /etc/my.cnf → /etc/mysql/my.cnf → ~/.my.cnf ``` ### 4. 手动配置建议 若需要自定义socket路径,应在`/etc/my.cnf`中添加: ```ini [mysqld] socket=/your/custom/path/mysql.sock [client] socket=/your/custom/path/mysql.sock ``` 同时需要确保目录权限: ```bash chown mysql:mysql /your/custom/path chmod 755 /your/custom/path ``` ### 5. 故障排查要点 - **权限验证**: ```bash namei -l /var/run/mysqld/mysqld.sock ``` 确保所有父目录都有`mysql`用户的执行权限 - **符号链接状态**: ```bash ls -l /var/lib/mysql/mysql.sock ``` 应显示类似: ``` lrwxrwxrwx 1 root root 23 Nov 15 10:00 /var/lib/mysql/mysql.sock -> /var/run/mysqld/mysqld.sock ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值