centos8安装mysql 8.4.5 LTS版本(安装全过程以及踩坑总结)
相应的软件包只能在对应平台下安装,离开这个环境,软件就无法运行。很多开源软件不一定都提供二进制安装包,java类的开源软件一般提供二进制安装包,mysql也提供有二进制安装包。7、进入到/usr/local/mysql-8.4.5/bin/执行初始化操作,注意留意相关的数据库密码。3、安装mysql依赖包并且解压mysql的二进制文件。6、创建mysql用户,并且将mysql-8.4.5文件
Linux下二进制格式的软件是指事先已经在各种平台编译安装好相关软件,然后压缩打包,提供给我们使用。在安装二进制软件包时,只需解压或者执行安装可执行文件即可。
优缺点:
① 二进制软件包的优点是安装简单、容易。
② 缺点是缺乏灵活性,相应的软件包只能在对应平台下安装,离开这个环境,软件就无法运行。很多开源软件不一定都提供二进制安装包,java类的开源软件一般提供二进制安装包,mysql也提供有二进制安装包。
mysql下载地址:MySQL :: Download MySQL Community Server
以安装二进制mysql软件为例
1、检查系统中是否安装mariadb文件,如果有需要卸载
rpm -qa | grep -i mariadb
卸载mariadb
rpm -e XXX
2、检查以前是否安装过mysql,如果安装需要卸载
dnf -y remove mysql-server
3、安装mysql依赖包并且解压mysql的二进制文件。建议解压到/usr/local目录下
yum install libaio
tar -xvf mysql-8.4.5-linux-glibc2.17-x86_64.tar.xz
重命名为mysql-8.4.5
mv mysql-8.4.5-linux-glibc2.17-x86_64 mysql-8.4.5
4、进入到mysql-8.4.5目录,创建mysql的工作目录
mkdir data
- 数据目录:/data/mysql/data;
5、在/etc下面创建my.cnf配置文件,具体内容如下:
touch my.cnf
my.cnf文件内容:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql-8.4.5
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql-8.4.5/data
# 错误日志配置
log_error = /var/log/mysql/error.log
# 设置socket文件路径
socket = /var/lib/mysql/mysql.sock
# 设置pid文件路径
pid-file = /var/lib/mysql/mysql.pid
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 设置时区时间,避免时间错误
default-time-zone = '+8:00'
log_timestamps = SYSTEM
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证(新版本)
mysql_native_password=ON
# 默认使用“mysql_native_password”插件认证(旧版本)
#default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket = /var/lib/mysql/mysql.sock
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 设置mysql字符集排序规则
collation-server=utf8mb4_0900_ai_ci
default-character-set = utf8mb4
socket = /var/lib/mysql/mysql.sock
[mysqldump]
socket=/var/lib/mysql/mysql.sock # 告诉mysqldump去这里连接
这里会提示socket文件找不到的问题:主要的原因如下:
让我用一个比喻来解释:
MySQL 服务器 (mysqld) 就像一部总机电话。它的配置文件 (my.cnf 中的 [mysqld] 部分) 告诉它:“请把分机插座 (socket) 安装在 A 房间(例如 /var/lib/mysql/mysql.sock)”。
MySQL 客户端 (mysql, mysqladmin 等) 就像一部分机电话。它需要知道总机插座在哪才能接通。
现在,如果您只在“总机”的配置里写了插座位置,但“分机电话”并不知道这个新位置,它会怎么做?它会按照出厂默认设置,去最常见的地方(比如 /tmp/mysql.sock)找插座。如果那里没有总机,电话自然就打不通,于是报错 “Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock’”。
6、创建上述文件的必要文件
mkdir /var/log/mysql
cd /var/log/mysql
touch error.log
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql/
chown -R mysql:mysql /var/var/mysql/
7、创建mysql用户,并且将mysql-8.4.5文件全部给mysql用户
useradd mysql
chown -R mysql:mysql /usr/local/mysql-8.4.5
8、进入到/usr/local/mysql-8.4.5/bin/执行初始化操作,注意留意相关的数据库密码.这次创建完成在上述创建的error.log文件中
cd /usr/local/mysql-8.4.5/bin/
./mysqld --initialize --console
cat /var/log/mysql/error.log
2025-04-18T14:13:47.396209Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2025-04-18T14:13:47.397010Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.4.5/bin/mysqld (mysqld 8.4.5) initializing of server in progress as process 2624
2025-04-18T14:13:47.398058Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2025-04-18T14:13:47.401764Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-04-18T14:13:47.553649Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-04-18T14:13:48.673513Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: .yvA7+5uqq_!
2025-04-18T14:13:50.170418Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
9、设置MySQL的环境变量
vim /etc/profile
在末尾添加如下内容:
export MYSQL_HOME=/usr/local/mysql-8.4.5
export PATH=$PATH:$MYSQL_HOME/bin
执行如下命令加载环境变量
source /etc/profile
10、启动mysql数据库服务
/usr/local/mysql-8.4.5/support-files/mysql.server start
如果启动失败,执行如下命令,再次授权
chmod -R 777 /usr/local/mysql-8.4.5
11、设置使用systemd管理mysql数据库(只对mysql8有效)
1、编辑如下文件以及内容。注意ExecStart设置自己的实际路径
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=//usr/local/mysql-8.4.5/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
2、加载配置文件并且设置开机启动
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql
12、尝试登录数据库修改mysql数据库密码,设置root用户远程数据库
1、登录数据库
mysql -u root -p
解决方案:创建软连接,高版本可以兼容低版本,安装对应的版本不一定能解决问题
错误1)mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
查找对应的文件:find / -name libncurses.so*
ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
错误2)mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
查找对应的文件:find / -name libtinfo.so*
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
2、修改数据库密码
mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'shuaishuai';
Query OK, 0 rows affected (0.00 sec)
3、设置root用户远程登录
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set user.Host='%'where user.User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
13、尝试用Navicat连接。如果没有成功,检查防火墙和selinux。这里不做过多赘述。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)