Appearance
CentOS 7.9 离线安装 MySQL 5.7.36
一、mysql-5.7.36-el7-x86_64.tar.gz 安装包下载
sh
https://downloads.mysql.com/archives/community/ //官网下载地址
Product Version: 5.7.36
Operating System: Red Hat Enterprise Linux / Oracle Linux
OS Version: Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)二、卸载系统自带 mariadb
sh
[root@localhost ~]# rpm -qa|grep mariadb //查询安装的mariadb软件
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost ~]# yum remove -y mariadb-libs-5.5.68-1.el7.x86_64 //删除软件包及相关依赖
[root@localhost ~]# rm -rf /etc/my.cnf //删除遗留的目录
[root@localhost ~]# rm -rf /var/lib/mysql三、创建安装用户和组
sh
groupadd mysql //创建mysql用户组
useradd -r -g mysql -s /bin/false mysql //-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限四、创建安装目录,生产环境最好新加一块硬盘,保障系统崩溃情况下可以通过挂载硬盘的方式快速恢复数据库
sh
[root@localhost /]# mkdir data //创建安装目录
[root@localhost data]# ll
总用量 715496
-rw-r--r--. 1 root root 732667171 4月 23 17:45 mysql-5.7.36-el7-x86_64.tar.gz //上传安装包到data
[root@localhost data]# tar -zxvf mysql-5.7.36-el7-x86_64.tar.gz //解压安装包
[root@localhost data]# mv mysql-5.7.36-el7-x86_64/ mysql //重命名
[root@localhost data]# cd mysql/
[root@localhost mysql]# mkdir {binlog,log} //创建binlog,log目录
[root@localhost mysql]# cd log/
[root@localhost log]# touch mysqld.log //创建mysql.log文件
[root@localhost log]# touch slow.log //创建slow.log文件
[root@localhost data]# chown -R mysql:mysql /data/ //修改data文件夹包含子文件的用户、属组
[root@localhost data]# chmod 744 -R /data/ //修改data文件夹包含子文件的权限五、创建 /etc/my.cnf 文件,填入以下内容,注意路径
sh
[mysqld]
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
user=mysql
bind-address = 0.0.0.0
port=3306
symbolic-links=0
pid-file=/data/mysql/mysqld.pid
lc-messages-dir=/data/mysql/share/
server-id=1
max_connections=1000
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-storage-engine=INNODB
max_allowed_packet=16M
default-time_zone = '+8:00'
log-error=/data/mysql/log/mysqld.log
lower_case_table_names=1
log-bin = /data/mysql/binlog/mysql-bin.log
log-bin-index =/data/mysql/binlog/binlog.index
log_bin_trust_function_creators=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
innodb_buffer_pool_size = 6G
innodb_log_buffer_size = 64M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_file_per_table = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_temp_data_file_path=ibtmp1:500M:autoextend:max:4096M
innodb_status_file = 1
max_connections=1000
max_connect_errors=100
max_user_connections=400
long_query_time = 120
slow_query_log=1
log_output='File'
slow_query_log_file=/data/mysql/log/slow.log
[mysqld_safe]
log-error=/data/mysql/log/mysqld.log
pid-file=/data/mysql/mysqld.pid
[mysql.server]
basedir=/data/mysql
default-character-set=utf8mb4六、修改环境变量
sh
[root@localhost ~]# vim /etc/profile
export PATH=$PATH:/data/mysql/bin //末尾添加
[root@localhost ~]# source /etc/profile //刷新环境变量七、建立软连接
sh
ln -s /data/mysql/mysql.sock /tmp/mysql.sock八、初始化 MySQL
sh
[root@localhost ~]# cd /data/mysql/bin
[root@localhost bin]# mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql
如果报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
安装libaio.so.1的依赖库
yum -y install libaio九、mysqld 服务配置
sh
vim /usr/lib/systemd/system/mysqld.service //新建mysqld.service文件,填入以下内容sh
[Unit]
Description=MySQL Server
Documentation=man:mysqld(5.7)
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
# Have mysqld write its state to the systemd notify socket
Type=forking
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/data/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize
# Sets open_files_limit
LimitNOFILE = 655350
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=falsesh
chmod 644 /usr/lib/systemd/system/mysqld.service //添加权限
systemctl enable mysqld.service //添加开机自启
systemctl start mysqld.service //启动MySQL数据库
systemctl status mysqld.service -l //查看MySQL服务状态
systemctl stop firewalld //关闭防火墙
或者
firewall-cmd --zone=public --add-port=3306/tcp --permanent //在防火墙上添加端口3306
firewall-cmd --reload //重新载入防火墙配置
firewall-cmd --zone=public --query-port=3306/tcp //查看添加端口是否生效十、登录数据库修改密码、配置远程连接
sh
[root@localhost ~]# mysql //登录数据库
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36-log MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> alter user 'root'@'localhost' identified by '123456'; //修改数据库密码
Query OK, 0 rows affected (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set user.Host='%' where user.User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql>sh
alter user 'root'@'localhost' identified by '123456';
use mysql;
update user set user.Host='%' where user.User='root';
select user,host from user;
flush privileges;
