MySQL的常见安装方式有yum/apt,RPM包,二进制文件安装。

这里介绍二进制文件安装方式,二进制文件使用高级编译器进行预编译,并采用最佳选项构建,以实现最佳性能。

MySQL依赖libaio库,如果未安装,在初始化时可能遇到下面的报错:

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

mysql二进制类型 mysql8.0二进制安装_mysql

遇到此报错时,只需要使用下列命令安装libaio即可: 

yum install -y libaio

mysql二进制类型 mysql8.0二进制安装_mysql_02

安装步骤(以下命令需要root权限):

1. 删除系统默认自带的mariadb,如果没有安装忽略这一步:

[root@test-db_new ~]# rpm -aq | grep maria  # 查询是否安装mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@test-db_new ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64  # 移除

2. 新建mysql用户:

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

3. 将二进制安装文件上传到/opt下(/opt目录一般用来安装第三方软件)

二进制值文件安装文件的下载地址是(自己选择版本):MySQL :: Download MySQL Community Server (Archived Versions)

在下载选项中选择:linux-generic

mysql二进制类型 mysql8.0二进制安装_MySQL_03

4. 解压安装文件包,并改名,这里

cd /opt
tar -xvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz     # 解压
mv mysql-8.0.11-linux-glibc2.12-x86_64  mysql8.0 # 将解压后目录修改为mysql8.0

5. 在myql8.0目录下新建数据目录和加载目录

cd mysql8.0
mkdir data            # 数据目录
mkdir mysql-files     # 数据加载目录,由参数secure_file_priv指定
chmod 750 mysql-files # 修改加载目录权限

6. 将/opt/mysql8.0属主修改为mysql用户

cd /opt
chown -R mysql:mysql mysql8.0

7. 在/usr/local目录下新建软链接至/opt/mysql8.0(后续如果安装了多个版本的mysql,只需要将软链接删除,重新链接至对应版本目录即可)

cd /usr/local
ln -s /opt/mysql8.0 mysql

8. 准备配置文件my.cnf,并放到/etc目录下(/etc/my.cnf),下面准备了一份示例my.cnf文件,可以根据需要自行修改,几点说明如下:

  • default_authentication_plugin,默认的密码认证方式特地设置和旧版本一致,防止某些旧的工具连不上mysql.
  • innodb_buffer_pool_size 设置为2G(2个池),自行根据机器情况调整,如果是专属数据库服务器,建议设置为物理内存的60%~75%
[mysqld]
#----------------General----------------
user                   = mysql
basedir                = /usr/local/mysql
datadir                = /usr/local/mysql/data
port                   = 3306
socket                 = /usr/local/mysql/mysql.sock
log-error              = /var/log/mysqld.log
pid-file               = /tmp/mysqld.pid
secure-file-priv       = /usr/local/mysql/mysql-files
default_authentication_plugin = mysql_native_password
# character_set_server   = utf8
max_allowed_packet     = 8M
sort_buffer_size       = 2M
long_query_time        = 3
skip_name_resolve      = on
lower_case_table_names = 1

#----------------Replication----------------
server_id             = 31
log-bin                = mysql-bin

#----------------InnoDB Tablespaces----------------
innodb_file_per_table = 1

#----------------InnoDB Memory Allocation----------------
innodb_buffer_pool_size             = 2G
innodb_buffer_pool_instances        = 2

[mysql]
socket=/usr/local/mysql/mysql.sock

[client]
socket=/usr/local/mysql/mysql.sock

9. 初始化数据库实例(注意记录初始root密码):

cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower-case-table-names=1

mysql二进制类型 mysql8.0二进制安装_mysql_04

注:如果这里初始化时遇到 could not open /var/log/mysqld.log报错,可以手动创建此文件并将属主改为mysql

touch /var/log/mysqld.log
chown -R mysql:mysql /var/log/mysqld.log

10.配置PATH环境变量(执行mysql等命令不需要带路径),这里用root用户示例:

将/usr/lobal/mysql/bin目录加入PATH
cd /root
vi .bash_profile

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin  # 将:/usr/local/mysql/bin添加到PATH目录之后

退出后 source .bash_profile使配置生效

11. 启动并登录mysql,使用初始密码登录(如果没记住去/var/log/mysqld.log中找),并修改root密码:

mysqld_safe &                  # 启动mysql
mysql -uroot -p'/BBgXz(_e5;?'  # 使用初始密码登录

alter user 'root'@localhost identified by 'vincent';  # 登录后修改root密码

mysql二进制类型 mysql8.0二进制安装_mysql二进制类型_05

mysql二进制类型 mysql8.0二进制安装_linux_06

mysql二进制类型 mysql8.0二进制安装_mysql_07

12. 便捷登录(可选),平时比较懒的同学,可以配置免密码登录:

mysql_config_editor set --login-path=client --user=root --password  # 回车后输入刚才修改的root用户密码

mysql二进制类型 mysql8.0二进制安装_mysql二进制类型_08

 此时只需要输入mysql就可以直接以root用户登录了:

mysql二进制类型 mysql8.0二进制安装_mysql二进制类型_09

 更进一步:

在/root/.bash_profile中添加如下别名:
echo 'alias m=mysql' >> /root/.bash_profile   # 添加后source一下使配置生效

此时只要输入m,回车,就可以登录,大功告成!

mysql二进制类型 mysql8.0二进制安装_linux_10