在 centOS9 上安装 MySQL8(通用二进制包 Linux Generic)
- .tar:只是打包而没有压缩。
- .tar.gz:是一个压缩包,使用的是 gzip 压缩工具。
- .tar.xz:也是一个压缩包,使用的是 xz 压缩工具。
安装之前,首先要卸载干净自己系统上面的原有数据库包,卸载旧版本的 MySql(没有的话,则跳过此步骤)
# 查看 dnf/yum 是否安装过 mysqldnf list installed mysql* # 根据列表上的名字,进行移除dnf remove mysql-community-client mysql-community-common mysql-community-libs mysql-community-server # 移除数据库rm -rf /var/lib/mysql # 删除配置文件rm -f /etc/my.cnf # 剩余配置文件chkconfig --list | grep -i mysqlchkconfig --del mysqld
# 查看旧版本 MySqlrpm -qa | grep mysql # 逐个删除掉旧的 MySql 组件。并且不删除其他软件包的依赖包。rpm -e {file-name} em>--nodeps # 删除配置文件rm -f /etc/my.cnf # 查找之前老版本 MySQL 文件find /usr -name mysqlfind /var -name mysqlfind /opt -name mysql
创建 mysql 用户
# 检查 mysql 用户组是否存在cat /etc/group | grep mysql # 检查 mysql 用户是否存在cat /etc/passwd | grep mysql # 添加 mysql 用户组groupadd mysql # 添加用户useradd -r mysql -g mysql -M -s /sbin/nologin
下载解压 MySQL
官网下载:https://dev.mysql.com/downloads/mysql/
通用二进制包,是 MySQL 官方编译好的二进制包,不需要自己再编译,直接使用。
- *-minimal.tar.xz,最小安装发行版不包括调试二进制文件,并且去除了调试符号,使其明显小于常规二进制发行版。
- glibc是 GNU 发布的 libc 库,即 c 运行库。
# 查询 glibc 库版本ldd --version # 显示如下: ldd (GNU libc) 2.34
cd /usr/local/srcwget -c https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz --no-check-certificate # 解压tar -xvf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz # 查看解压文件ls -l # 移动到使用目录mv mysql-8.0.33-linux-glibc2.28-x86_64 /usr/local/mysql
配置 MySQL
vim /etc/my.cnf
[mysqld] # default_authentication_plugin=mysql_native_password datadir=/usr/local/mysql/data socket=/usr/local/mysql/run/mysqld.sock pid-file=/usr/local/mysql/run/mysqld.pid log-error=/var/log/mysql/mysqld.log user=mysql port=3306 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' skip-character-set-client-handshake=true skip_name_resolve [mysql] port=3306 default-character-set=utf8mb4 [client] default-character-set=utf8mb4 socket=/usr/local/mysql/run/mysqld.sock [mysqldump] quick max_allowed_packet=1024M default-character-set=utf8mb4
unix、linux 下 lower_case_table_names,默认值为 0。Windows下默认值是 1。Mac OS X下默认值是 2。
- lower_case_table_names=0:表名存储为给定的大小和比较是区分大小写的。
- lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写。
- lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的。
mkdir /usr/local/mysql/runtouch /usr/local/mysql/run/mysqld.pidtouch /usr/local/mysql/run/mysqld.sockchown -R mysql:mysql /usr/local/mysqlmkdir -p /var/log/mysqltouch /var/log/mysql/mysqld.logchown -R mysql:mysql /var/log/mysql
添加 MySQL 命令到 PATH 变量
修改配置文件/etc/profile
vim /etc/profile
在末尾,添加:
export PATH=$PATH:/usr/local/mysql/bin
保存退出,然后刷新环境变量,使之立即生效:
source /etc/profile
或者在 Linux 环境下,直接输入:
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profilesource /etc/profile
初始化 MySQL
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
MySQL 在初始化过程中,会在日志中生成一个随机密码。查看随机密码:
grep 'temporary password' /var/log/mysql/mysqld.log
启动 MySQL 服务
首先,开启开启 MySQL 加密链接
mysql_ssl_rsa_setup
mysql_ssl_rsa_setup 程序用于创建 SSL 证书和密钥文件以及 RSA 密钥对文件,以支持使用 SSL 的安全连接和使用 RSA 通过未加密连接的安全密码交换(如果这些文件丢失)。如果现有的 SSL 文件已经过期,mysql_ssl_rsa_setup 也可用于创建新的 SSL 文件。
/usr/local/mysql/support-files/mysql.server start
登录 MySQL 修改密码
mysql -u root -p
报错:mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
find /usr -name "libtinfo.so*" # 显示如下: /usr/lib64/libtinfo.so /usr/lib64/libtinfo.so.6.2 /usr/lib64/libtinfo.so.6
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
等录 mysql 后,修改密码:
alter user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '这里改成自己需要设定的密码';flush privileges;
登录 mysql 后,身份验证方式。
SELECT USER,PLUGIN FROM mysql.`user`; # 显示如下: +------------------+-----------------------+ | USER | PLUGIN | +------------------+-----------------------+ | mysql.infoschema | caching_sha2_password | | mysql.session | caching_sha2_password | | mysql.sys | caching_sha2_password | | root | caching_sha2_password | +------------------+-----------------------+
登录 mysql 后,查看配置的字符集。
show variables like '%character%'; # 显示如下: +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+show variables like '%collation%'; # 显示如下: +-------------------------------+--------------------+ | Variable_name | Value | +-------------------------------+--------------------+ | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | | default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci | +-------------------------------+--------------------+ # 查看完毕,退出 mysqlexit ;
# 停止 MySQL 服务 /usr/local/mysql/support-files/mysql.server stop
设置 MySQL 开机自启动
vim /usr/lib/systemd/system/mysqld.service
[Unit] Description=MySQL Server Documentation=mysqld.service After=network.target After=syslog.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 [Install] WantedBy=multi-user.target
# 设置开机自启动systemctl enable mysqld
# 重载 mysqld 配置文件systemctl daemon-reload # 启动 mysqld 服务systemctl start mysqld # 停止 mysqld 服务systemctl stop mysqld # 重启 mysqld 服务systemctl restart mysqld # 查看 mysqld 服务状态systemctl status mysqldpidof mysqldps aux | grep mysqld
开启防火墙 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reload
# 查看防火墙开放端口firewall-cmd --list-all