核心问题

我尝试网上各种办法在 Linux 系统上安装mysql,最后一运行总是报错,服务跑不起来,经过数次实验和尝试,最终发现了问题,并解决,希望大家以此为戒,以此为例。
导致mysql安装失败,或运行失败最核心的问题就是文件夹权限问题,大部分文件夹可能权限都对,但我总是有一个存放 mysql.sock 文件的文件夹权限无法 用 mysql用户访问,导致启动失败。
电脑配置:ARM64 架构,统信UOS 系统,安装 mysql9 版本。
如果你的架构和系统和我不一样,也能安装,只是可能个别命令不同,例如我是使用 systemctl 启动的mysql服务,你可能需要其它命令。

安装mysql

下载 mysql

去mysql官网下载即可,需要能访问外网的网络。mysql官网 https://dev.mysql.com/downloads/mysql/ ,百度一搜索就能搜到。注意要下载与Linux架构对应版本的压缩包:
在这里插入图片描述

例如 我下载的是 mysql-9.5.0-linux-glibc2.28-aarch64.tar.xz

安装

解压

首先将压缩包解压到自定义的位置,此为mysql的安装位置,并在安装目录的文件夹内创建一个 data 文件夹,用于存放 mysql 的数据。例如,我的文件夹结构为 :
/mnt/dream/softs/mysql9 (安装目录)与 /mnt/dream/softs/mysql9/data (数据目录)

创建用户

1 我们创建出 mysql 用户组与用户:

sudo groupadd mysql

sudo useradd -g mysql -s /bin/false mysql

创建 一个名为 mysql 的用户组,在该用户组中创建一个名为 mysql 的用户。

初始化

2 然后对mysql进行初始化:

cd /mnt/dream/softs/mysql9

./bin/mysqld --initialize --user=mysql --basedir=/mnt/dream/softs/mysql9 --datadir=/mnt/dream/softs/mysql9/data

初始化时会产生一个随机生成的初始密码,记住这个密码,后面用于第一次登录mysql 使用。
初始化完成后,mysql 的安装目录中就会多出一些文件夹和文件,这是正常的。

编写配置

3 创建配置文件,在 /etc / my.cnf 位置,mysql能够自动识别该位置,内容如下:

[mysqld]
basedir=/mnt/dream/softs/mysql9
datadir=/mnt/dream/softs/mysql9/data
socket=/mnt/dream/softs/mysql9/mysql.sock
port=3306
explicit_defaults_for_timestamp=true
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
socket=/mnt/dream/softs/mysql9/mysql.sock

上面提到的文件夹和文件,注意修改为你自己的目录。

环境变量

4 配置环境变量:对 /etc / profile 修改:

# mysql
export PATH=$PATH:/mnt/dream/softs/mysql9/bin:/mnt/dream/softs/mysql9/lib
export PATH

注意修改为你自己的文件夹位置。
然后使用 source /etc/profile 命令刷新 环境变量。

创建服务

5 创建 mysql 服务:

sudo cp -a /mnt/dream/softs/mysql9/support-files/mysql.server /etc/init.d/mysqld

sudo chmod +x /etc/init.d/mysqld 
# 这样就能 以 service mysql start 的方式启动和关闭mysql服务,刚配置上可使用 systemctl daemon-reload 刷新一下

注意权限

6 最关键的,把 和mysql沾边的所有位置都设置为mysql用户组和mysql用户,包括如下位置:

① /mnt/dream/softs/mysql9/mysql.sock  # 前面对 mysql9 整个文件夹配置好以后,应该没问题,但如果没有使用这个位置,就要注意修改。

② /etc/my.cnf

③  /etc/mysql/ 

④  /var/log/mysqld.log # mysql 日志相关文件,默认在该位置

⑤ /var/log/mysql/	# mysql 日志相关文件,默认在该位置

使用 sudo chown -R mysql:mysql 文件夹或文件 修改为 mysql 用户可以操作的权限。

问题

以下问题,mysql 无法启动,应该都是权限不足导致的:

test@test-PC:/usr/local/mysql$ service mysql start # 想启动,报错如下

Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.

如果直接使用命令:mysql 然后就报错如下:

# ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/mysql.sock' (2)
#  这样的错误,大概率是mysql没有启动,启动后它会创建出对应的 sock文件,还要考虑这个文件所在的位置是否是 mysql 的权限。

再报错,就仔细想想有什么文件夹引用了,或者间接的用到了,但是没有修改权限。

启动服务

service mysql start

可使用以下命令查看mysql是否正常启动:

ps -ef | grep mysql

修改初始密码

在 mysql 初始化时产了随机密码,使用该随机密码登录mysql :

mysql -uroot -p&cx_zsa%x23*

然后修改初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐