centos 7 登陆 mysql 报错:Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (111)

报错情况

        在 centos 7 机器上使用源码安装完 mysql 8.0.31 后,输入初始密码,报如下错误:

        根据该错误进入到 /usr/local/mysql3306/data/ 目录下(/usr/local/mysql3306/ 目录为 mysql 8.0.31的安装目录),发现确实没有 mysql.sock 文件, /usr/local/mysql3306/data/ 目录内容如下:

网上搜索情况 

        根据该报错问题,在网上搜索了一通,大多数解决方案指向:需要对 mysql.sock 进行软连接;

软连接

ln -s /data/mysql/tmp/mysql.sock /tmp/mysql.sock

说明:

       /usr/local/mysql3306/data/mysql.sock 为 mysql3306 安装目录;

       /tmp/mysql.sock 系统文件;

软连接结果

结果显示无法创建软连接,结果如下所示:

终无果!!! 

最终解决方案

        导致输入初始密码后报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) 的原因有很多;

        但大都一般是因为在安装 mysql 过程中,漏掉了一些关键步骤!

我遇到的情况

        我使用源码的方式在 centos 7 上部署 mysql 8.0.31,在安装完成并输入初始密码后,报如上错误!!!

        经过仔细审视了一边,最终发现:忘记创建 用户名和组 

      (你们出现这种情况,可能是忘记创建用户名和组,也有可能是漏掉了一些别的重要步骤,所以可考虑审查一遍安装流程!)

解决办法

 1、无需删除已经安装的 mysql,直接在现有基础上建立用户民和组,创建命令如下:

# 参数说明:-M 不创建家目录 -s 指定 -r 创建系统账户

groupadd mysql3306 
useradd -r -g mysql3306 -M -s /bin/false mysql3306 

 
# 因为我在一台机器上部署了多个 mysql 
# 为了加以区分,所以创建的用户名和组都以端口号命名,如: mysql3306 

 2、然后清空 /usr/local/mysql3306/data/ 目录下的所有内容,清空命令如下;

cd /usr/local/mysql3306/data/
rm -rf *

需要注意的是:在重新初始化前,必须清空 mysql 安装目录下的 ./data 文件夹,否则会导致重新初始化失败! 

3、重新初始化,初始化命令如下:

# --defaults-file=/etc/my3306.cnf 中的 /etc/my3306.cnf 为自己创建的配置文件名称和路径
# --user=mysql3306 中的 mysql3306 为用户名,需要和上述创建的保持一致
# --port=3306 中的 3306 为端口号,该命令是初始化指定端口号的 mysql

bin/mysqld --defaults-file=/etc/my3306.cnf --initialize --user=mysql3306 --port=3306

4、初始化完成后,启动 mysql 并输入初始密码即可,启动 mysql 命令如下:

# 启动指定端口号的 mysql

bin/mysqld_safe --user=mysql3306 --port=3306 &

bin/mysql -u root -p -P 3306

 执行结果如下所示:

centos 7 登陆 mysql 报错:Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (111)_第1张图片

你可能感兴趣的:(Linux,操作系统,CentOS,centos,mysql,linux)