Linux 下安装 MySQL8,我讲明白了吗?

一、前期准备

Linux 安装 MySQL8,需要进行一些前期准备。 具体如下:

rpm -qa | grep mysql       # 查询是否安装 mysql
rpm -e --nodeps xxx        # 将上述查询结果删除,如果上述没有结果,则跳过这条命令
whereis mysql
find / -name mysql         # 查找 mysql 相关的文件或文件夹
rm -rf xxx                 # 将上述查询结果删除,如果上述没有结果,则跳过这条命令

# 检查 mysql 用户组和用户是否存在,如果不存在,则创建
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
groupadd mysql
useradd -r -g mysql mysql

二、下载 MySQL8

下载 MySQL8 的压缩包。这里只介绍命令下载。 如下:

# 下载 MySQL8 的压缩包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz

# 解压 MySQL8 的压缩包
tar xvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz

# 将压缩包移动到 /usr/local 目录下,并重命名为 mysql
mv mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql

# 在 mysql 目录下创建 data 目录
cd /usr/local/mysql
mkdir data

# 更改 mysql 目录下所有的文件所属的用户组和用户,以及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

三、安装 MySQL8

开始安装 MySQL8。 如下:

# 进入到 mysql 的 bin 目录下,然后执行安装命令
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql/

# 执行上一条命令可能报错,错误如下:
# ./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
# 解决方法如下
yum install -y libaio

# 再次执行安装命令
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql/

执行上述安装命令之后将 返回结果 如下:

2021-02-10T13:57:44.267576Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2021-02-10T13:57:44.267684Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.11) initializing of server in progress as process 2920
2021-02-10T13:57:47.429362Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ZEzLjCo/L8g;
2021-02-10T13:57:48.630636Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.11) initializing of server has completed

# 上述结果中,藏有 mysql 的 root 用户的临时密码
# 2021-02-10T13:57:47.429362Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ZEzLjCo/L8g;
# 因此,需要把这个临时密码复制出来,等下登录时需要用。我的临时密码是: 【ZEzLjCo/L8g;】包括了那个分号,我在这个地方踩了个坑

接下来编辑 /etc/my.cnf 配置文件。 代码如下:

[mysqld]
datadir=/usr/local/mysql/data
port=3306
max_connections=600
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
innodb_file_per_table=1
symbolic-links=0
log-error=/usr/local/mysql/data/error.log

然后测试启动 mysql 服务器。 代码如下:

# 测试启动 mysql 服务器
/usr/local/mysql/support-files/mysql.server start

# 如果显示 SUCCESS 或者有 [OK] 等字样,且没有报错,那么恭喜你,mysql 服务器启动成功了!

四、收尾工作

添加软连接,并重启 mysql 服务器。 代码如下:

# 添加软连接,并重启 mysql 服务器
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
service mysql status       # 查看 mysql 状态

登录 mysql 服务器。 代码如下:

# 登录 mysql 
mysql -uroot -p            # 然后输入刚刚获取到的临时密码即可登录

# 修改 mysql 密码
ALTER USER USER() IDENTIFIED BY 'YOUR PASSWORD';
FLUSH PRIVILEGES;

# 开放远程连接
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

设置开机自启动。 代码如下:

# 1、将服务文件拷贝到 init.d 目录下,并重命名为 mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# 2、赋予可执行权限
chmod +x /etc/init.d/mysqld

# 3、添加服务
chkconfig --add mysqld

# 4、显示服务列表
chkconfig --list

TIPS: 至此,Linux 下安装 MySQL8 已经完全搞定!

五、远程连接不上

1、BUG-01

当我使用可视化工具连接远程服务器数据库,出现了 MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client…… 问题。解决方案如下:

use mysql;
alter user 'root'@'%' identified with mysql_native_password by '********';
flush privileges;

参考自:StackOverflow

2、BUG-02

当我使用可视化工具连接远程服务器数据库,出现了 Can't connect to MySQL server (10060)…… 问题。如果是阿里云的 MySQL 服务器,那么可以去阿里云官网添加安全组规则,使服务器开放 3306 端口。 其他的云服务也是一样的操作。或者是查看防火墙的状态,如果防火墙开启了,那么需要关闭。

3、BUG-03

当启动 MySQL 时,系统出现 mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory 这种错误,那么解决方法如下:

# MySQL 我采用的是 Linux- Generic 包安装,其中详细略过不表。一顿操作之后,终于到将 mysql 服务启动。但是到了连接服务的时候却报错了。

mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

# 解决办法:
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

4、BUG-04

# 如果使用 `source` 命令导入数据出现  MySQL server has gone away 的问题,那么解决方法如下:

# 解决方案:
1、编辑 my.ini 文件(Linux 系统是编辑 my.cnf 文件)
2、添加一行配置:max_allowed_packet = 10M ,然后保存退出
3、打开命令行窗口,使用 services.msc 进入服务列表,重启 MySQL 服务
4、再次执行 source 命令即可、具体如下图:

  • 文章作者:root
  • 创建时间:2022-01-15 07:35:53
  • 更新时间:2022-01-15 07:35:53
  • 版权声明:本文为博主原创文章,未经博主允许不得转载!
请 在 评 论 区 留 言 哦 ~~~
1024