个人博客地址:http://www.ltang.me/2020/10/18/mysql-install/
下载地址
https://downloads.mysql.com/archives/community/
解压安装包
tar -xvzf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
mkdir /usr/local/mysql
cp mysql-5.7.31-linux-glibc2.12-x86_64/* /usr/local/mysql -r
添加用户组和用户
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql/
mkdir /home/mysql/data
mkdir /home/mysql/log
mkdir /home/mysql/tmp
chown -R mysql:mysql /home/mysql/
配置文件
# vim /etc/my.cnf 内容如下
[client]
port = 3306
socket = /home/mysql/tmp/mysql.sock
[mysqld]
server-id = 1
port = 3306
basedir = /usr/local/mysql
datadir = /home/mysql/data
tmpdir = /home/mysql/tmp
socket = /home/mysql/tmp/mysql.sock
pid-file = /home/mysql/log/mysql.pid
skip_name_resolve = 1
character-set-server = utf8mb4
transaction_isolation = READ-COMMITTED
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names = 1
max_connections = 400
max_connect_errors = 1000
explicit_defaults_for_timestamp = true
interactive_timeout = 1800
tmp_table_size = 128M
log_error = /home/mysql/log/error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /home/mysql/log/slow.log
log-bin = mysql-bin
binlog_format = ROW
binlog_row_image = minimal
innodb_buffer_pool_size = 2048M
初始化mysql
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql
可能会报错,如下:
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
分别执行以下命令安装缺失包即可:
yum -y install libaio
yum -y install numactl
注:如果离线环境,可能需要先配置好yum源
没有异常的话, mysql已经初始化完成,默认的root密码打印在/home/mysql/log/error.log
中
设置开机启动
# 复制启动脚本
cd /usr/local/mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# 添加执行权限
chmod +x /etc/rc.d/init.d/mysqld
# 加入系统服务
chkconfig --add mysqld
# 检查mysqld服务是否已经生效
chkconfig --list mysqld
# 切换至mysql用户,启动mysql
su - mysql
service mysqld start
将mysql命令加入环境变量
su - mysql
vi .bash_profile
#增加export PATH=$PATH:/usr/local/mysql/bin
source .bash_profile
登录mysql, 修改密码
mysql -uroot -p
# 密码在/home/mysql/log/error.log
set password for root@localhost=password("123456");
# select * from mysql.user 已经可以看到
添加mysql用户,设置权限
CREATE USER 'appuser'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'appuser'@'%';
FLUSH PRIVILEGES;