Ubuntu24.04安装MySQL8.4

232 阅读2分钟

下载MySQL

wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz

解压MySQL

tar -xf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /usr/local/

创建用户以及数据目录

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
ln -s /usr/local/mysql-8.4.3-linux-glibc2.28-x86_64/ mysql
cd mysql
mkdir mysql-files
chown mysql:mysql mysql-files/
chmod 750 mysql-files/

创建MySQL初始化配置文件

创建文件/etc/my.cnf,内容如下

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
bind-address = 0.0.0.0
port = 3306
socket = /tmp/mysql.sock
character_set_server = utf8mb4
basedir = /usr/local/mysql
datadir = /usr/local/mysql/mysql-files

开始初始化MySQL

bin/mysqld --initialize --user=mysql

执行上述命令后可能会有如下错误输出,提示我们缺少libaio库

bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

该错误的解决办法

# 安装依赖库
sudo apt install numactl libaio1t64 -y
# 创建软链接
ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1

重新执行初始化命令

 → bin/mysqld --initialize --user=mysql
2024-10-26T12:48:15.135476Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2024-10-26T12:48:15.136976Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.4.3-linux-glibc2.28-x86_64/bin/mysqld (mysqld 8.4.3) initializing of server in progress as process 14465
2024-10-26T12:48:15.150614Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-10-26T12:48:16.458511Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-10-26T12:48:20.521085Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: t;fAIhvzC0<j
2024-10-26T12:48:26.059732Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.

拷贝MySQL启动脚本

cp support-files/mysql.server /etc/init.d/mysql.server

启动MySQL

 /etc/init.d/mysql.server start

修改PATH环境变量

/usr/local/mysql/bin添加到PATH环境变量中,里面有一些MySQL常用的一些命令。

登陆MySQL

初始密码为我们初始化时候控制台输出的那个root密码

mysql -uroot -p

修改密码

我们将密码修改为123456

mysql> set password="123456";
Query OK, 0 rows affected (0.02 sec)

参考文档