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
遇到此报错时,只需要使用下列命令安装libaio即可:
yum install -y libaio
安装步骤(以下命令需要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
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文件,可以根据需要自行修改,几点说明如下:
[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
注:如果这里初始化时遇到 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密码
12. 便捷登录(可选),平时比较懒的同学,可以配置免密码登录:
mysql_config_editor set --login-path=client --user=root --password # 回车后输入刚才修改的root用户密码
此时只需要输入mysql就可以直接以root用户登录了:
更进一步:
在/root/.bash_profile中添加如下别名:
echo 'alias m=mysql' >> /root/.bash_profile # 添加后source一下使配置生效
此时只要输入m,回车,就可以登录,大功告成!