Archlinux 安装mysql8.4.5 保姆级教程 包括踩坑过程 2025-06-19/ 104 次浏览/ 随笔 # Archlinux 安装mysql8.4.5 - 到官网下载Community版本的MySQL https://dev.mysql.com/downloads/mysql/ 我下载的是8.4.5 LTS 点击Compressed TAR Archive 进行下载 - 解压MySQL压缩包 ```shell tar -xvf mysql-8.4.5-linux-glibc2.28-x86_64.tar.xz ``` - 移动到opt目录下并重命名 ```shell sudo mv mysql-8.4.5-linux-glibc2.28-x86_64/ /opt/mysql-8.4.5 ``` - 然后创建三个新文件夹,在/opt/mysql-8.4.5目录下执行 ```shell # 数据存储 sudo mkdir data # 日志存储 sudo mkdir log # 临时文件 sudo mkdir tmp ``` - 新增用户组 ```shell sudo groupadd mysql ``` - 新增组用户 ```shell sudo useradd -g mysql mysql ``` - 用户授权,后面的路径应该为你自己实际安装的路径 ```shell sudo chown -R mysql:mysql /opt/mysql-8.4.5/ ``` - 给目录授权 ```shell sudo chmod -R 777 /opt/mysql-8.4.5 ``` - 在全局配置文件中配置MySQL路径到环境变量 ```shell sudo nano /etc/profile ``` - 变量内容 ```shell export PATH=$PATH:/opt/mysql-8.4.5/bin ``` - 重新加载环境变量 ```shell source /etc/profile ``` - 编写MySQL配置文件 初次安装,系统中是不含这个文件的 ```shell sudo nano /etc/my.cnf # 正常情况下是没有这个文件的,执行保存之后会自动创建 ``` 配置文件内容如下(路径记得改为自己的,socket = /tmp/mysql.sock路径不用改),将下面的配置文件粘贴到my.cnf中保存并退出 ```shell [mysqld] #允许所有 IP 连接(0.0.0.0 表示不限制) bind-address = 0.0.0.0 #自定义 MySQL 服务端口(默认 3306) port = 3306 #MySQL 安装目录。 basedir = /opt/mysql-8.4.5 #数据文件存储路径 datadir = /opt/mysql-8.4.5/data #本地连接使用的 Unix 套接字文件。 socket = /tmp/mysql.sock #错误日志路径(排查故障关键文件) log-error = /opt/mysql-8.4.5/log/error.log #进程 ID 文件路径。 #pid-file = /run/mysqld/mysql.pid pid-file = /opt/mysql-8.4.5/data/mysql.pid #临时文件目录 tmpdir = /opt/mysql-8.4.5/tmp #表名存储为小写,比较时不区分大小写。 lower_case_table_names = 1 #表名存储为创建时的大小写,但比较时转换为小写 #lower_case_table_names = 2 #默认引擎(推荐 InnoDB) default-storage-engine=INNODB #InnoDB 缓冲池大小 innodb_buffer_pool_size = 5G # 服务端默认字符集 character-set-server = utf8mb4 # 默认排序规则 collation-server = utf8mb4_unicode_ci # 每个新连接初始化时执行的SQL init_connect = 'SET NAMES utf8mb4' #允许的最大数据包大小(避免大数据插入/导出失败) max_allowed_packet=100M #使用传统密码认证(兼容旧版客户端)如果启用会报错 #mysql_native_password认证 插件从MySQL 8.0.34开始被弃用,默认情况下禁用 在MySQL 8.4中,从MySQL 9.0.0开始删除。 #default-authentication-plugin = mysql_native_password ``` - 初始化数据库 一定要在mysql安装目录下的bin目录下执行,路径换成你自己的路径,我的安装路径在 /opt/mysql-8.4.5,所以要在/opt/mysql-8.4.5/bin下执行,你们要根据自己的路径去执行 ```shell ./mysqld --initialize --user=mysql --datadir=/opt/mysql-8.4.5/data --basedir=/opt/mysql-8.4.5 ``` 运行后报错 ```shell ./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory ``` 执行安装libaio ```shell sudo pacman -S libaio ``` 继续报错 ```shell ./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory ``` 执行安装numactl ```shell sudo pacman -S numactl ``` 再次执行数据库初始化,没有报错 ```shell #找到/opt/mysql-8.4.5/log/error.log #在这里找到 #A temporary password is generated for root@localhost: D6l_Fkzc)8vg #其中D6l_Fkzc)8vg就是数据库的初始密码 ``` 创建MySQL的systemctl配置 ```shell sudo nano /etc/systemd/system/mysqld.service ``` 配置文件内容 ```shell [Unit] Description=Mysql8 Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Service] User=mysql Group=mysql PIDFile=/opt/mysql-8.4.5/data/mysqld.pid #修改成mysql的启动文件及配置文件路径 ExecStart=/opt/mysql-8.4.5/bin/mysqld --defaults-file=/etc/my.cnf [Install] WantedBy=multi-user.target ``` 设置开机自动启动 ```shell sudo systemctl enable mysqld.service #收到如下提示 Created symlink '/etc/systemd/system/multi-user.target.wants/mysqld.service' → '/etc/systemd/system/mysqld.service'. ``` 然后启动服务 ```shell sudo systemctl start mysqld.service ``` 查看启动服务有没有什么问题 ```shell journalctl -f -u mysqld.service ``` 添加全局的mysql命令 ```shell sudo ln -s /opt/mysql-8.4.5/bin/mysql /usr/bin ``` 更改root账号的密码 ```shell mysql -uroot -p #报错了 mysql: error while loading shared libraries: libncurses.so.6: cannot open shared object file: No such file or directory #执行 sudo ln -s /usr/lib64/libncursesw.so.6 /usr/lib64/libncurses.so.6 #再次运行 mysql -uroot -p #成功了 #输入初始化密码D6l_Fkzc)8vg登录 #使用ALTER USER 修改初始化密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; #到此结束 ``` # 如果执行mysql -uroot -p后报错 ```shell ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' ``` 说明MySQL服务没有正确运行 ```shell #查看MySQL运行状态 sudo systemctl status mysqld #发现有一个错误,没法打开错误日志文件 [ERROR] [MY-010187] [Server] Could not open file '/opt/mysql-8.4.5/log/error.log' for error logging: Permission denied #检查后发现文件所有者不是MySQL #重新更改用户授权 sudo chown -R mysql:mysql /opt/mysql-8.4.5/ #重新启动 MySQL 服务 #修改配置或权限后,重新启动 MySQL 服务以使更改生效 sudo systemctl restart mysqld #再次查看MySQL运行状态 sudo systemctl status mysqld #终于世界天下太平了 ``` # sudo systemctl mysqld 相关的命令主要包括以下几种 - 启动MySQL服务: ```shell sudo systemctl start mysqld #这条命令用于启动MySQL数据库服务 ``` - 停止MySQL服务 ```shell sudo systemctl stop mysqld #这条命令用于停止MySQL数据库服务 ``` - 重启MySQL服务: ```shell sudo systemctl restart mysqld #这条命令用于重启MySQL数据库服务 ``` - 查看MySQL服务状态: ```shell sudo systemctl status mysqld #这条命令用于查看MySQL数据库服务的当前状态 ``` - 设置MySQL服务开机自启: ```shell sudo systemctl enable mysqld #这条命令用于设置MySQL服务在系统启动时自动启动 ``` 关键词:MySQLArchLinux << 上一篇 Java数据结构与算法之数据结构概述 下一篇 >> ArchLinux编译安装Readis7保姆级教程 相关文章 87ArchLinux编译安装Readis7保姆级教程 104Archlinux 安装mysql8.4.5 保姆级教程 包括踩坑过程 85Java数据结构与算法之数据结构概述 268欢迎使用Z-BlogPHP!