一、软件包下载
企业版:Enterprise , 互联网行业一般不选择.
社区版本:选择
源码包 编译安装: source code .tar.gz
通用二进制
公司用什么版本数据库? 具体什么小版本号?
5.6.20 5.6.34 5.6.36 5.6.38 5.6.40
5.7.18 5.7.20 5.7.22 5.7.31
8.0.23 8.0.31
通用二进制版本: 本文档采用此方式安装
https://downloads.mysql.com/archives/community/
选择版本,再选择Operating System: Linux - Generic
二、卸载MariaDB
在CentOS中默认安装有MariaDB,是MySQL的一个分支,主要由开源社区维护。CentOS 7及以上版本已经不再使用MySQL数据库,而是使用MariaDB数据库。如果直接安装MySQL,会和MariaDB的文件冲突。因此,需要先卸载自带的MariaDB,再安装MySQL。
#查看是否存在MariaDB
rpm -qa|grep mariadb
#卸载mariadb
yum remove mariadb*
三、MySQL二进制安装
3.1 创建mysql工作目录:
root@db01 ~]# mkdir -p /home/application/mysql
3.2、上传软件,并解压并改名为app
[root@db01 app]# tar -xf /root/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
[root@db01 app]# mv mysql-8.0.31-linux-glibc2.12-x86_64 /home/application/mysql/app
[root@db01 app]# ls -l /home/application/mysql/app
total 36
drwxr-xr-x 2 root root 4096 Mar 4 14:55 bin
-rw-r--r-- 1 7161 31415 17987 Sep 13 2017 COPYING
drwxr-xr-x 2 root root 55 Mar 4 14:55 docs
drwxr-xr-x 3 root root 4096 Mar 4 14:55 include
drwxr-xr-x 5 root root 229 Mar 4 14:55 lib
drwxr-xr-x 4 root root 30 Mar 4 14:55 man
-rw-r--r-- 1 7161 31415 2478 Sep 13 2017 README
drwxr-xr-x 28 root root 4096 Mar 4 14:55 share
drwxr-xr-x 2 root root 90 Mar 4 14:55 support-files
3.3、修改环境变量
[root@db01 app]# vim /etc/profile
#加入一行
export PATH=$PATH:/home/application/mysql/app/bin
[root@db01 app]# source /etc/profile
3.4、建立mysql用户和组(如果有可忽略)
useradd -s /sbin/nologin mysql -M
3.5、创建mysql 数据目录,日志目录;并修改权限
mkdir -p /home/application/mysql/data
mkdir -p /home/application/mysql/data/logs
chown -Rf mysql.mysql /home/application/mysql/app
chown -Rf mysql.mysql /home/application/mysql/data
chown -Rf mysql.mysql /home/application/mysql/logs
3.6、准备my.cnf 配置文件
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/home/application/mysql/app
datadir=/home/application/mysql/data
default-storage-engine=INNODB
character-set-server=utf8mb4
collation_server = utf8mb4_general_ci
default_authentication_plugin=mysql_native_password
#只能用IP地址检查客户端的登录,不用主机名,跳过域名解析
skip-name-resolve=1
#忽略大小写检查
lower_case_table_names=1
#日志时间
log_timestamps=SYSTEM
default-time-zone = '+8:00'
#慢日志
long_query_time=3
slow_query_log=ON
slow_query_log_file=/home/application/mysql/logs/slow_query.log
#不记录未使用索引的查询到慢查询日志中
log_queries_not_using_indexes = 0
#管理员执行的慢查询语句记录到慢查询日志中
log_slow_admin_statements = 1
#将从服务器执行的慢查询语句记录到慢查询日志中
log_slow_replica_statements = ON
#当未使用索引的查询数量达到10次时,开始将这些查询记录到慢查询日志中
log_throttle_queries_not_using_indexes = 10
#通用日志
#general_log=1
#general_log_file=/home/application/mysql/logs/mysql_general.log
#错误日志
log-error=/home/application/mysql/logs/mysqld.log
#innodb配置
innodb_file_per_table = 1
innodb_data_file_path = ibdata1:500M:autoextend:max:10G
innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:20G
#binlog配置
server_id=17
log-bin=mysql-bin
max_binlog_size = 100M
binlog_format=row
log_replica_updates
#二进制日志(binlog)的过期时间-7天
binlog_expire_logs_seconds=604800
# disable_ssl
tls_version=''
port=3306
socket=/tmp/mysql.sock
max_connections=1000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_allowed_packet=512M
[mysql]
socket=/tmp/mysql.sock
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
3.7、初始化数据
初始化数据,初始化管理员的密码为空
# 如果已经初始化过了,就需要把数据目录数据情况,再次初始化 rm -rf /home/application/mysql/data/*
[root@db01 ~]# mysqld --defaults-file=/etc/my.cnf --initialize-insecure
[root@openeuler mysql]# ls -l /home/application/mysql/data/
总用量 610376
-rw-r----- 1 mysql mysql 56 3月 12 13:23 auto.cnf
-rw------- 1 mysql mysql 1676 3月 12 13:23 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 3月 12 13:23 ca.pem
-rw-r--r-- 1 mysql mysql 1112 3月 12 13:23 client-cert.pem
-rw------- 1 mysql mysql 1676 3月 12 13:23 client-key.pem
-rw-r----- 1 mysql mysql 436 3月 12 13:23 ib_buffer_pool
-rw-r----- 1 mysql mysql 524288000 3月 12 13:23 ibdata1
-rw-r----- 1 mysql mysql 50331648 3月 12 13:23 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 3月 12 13:23 ib_logfile1
drwxr-x--- 2 mysql mysql 4096 3月 12 13:23 mysql
-rw-r----- 1 mysql mysql 177 3月 12 13:23 mysql-bin.000001
-rw-r----- 1 mysql mysql 19 3月 12 13:23 mysql-bin.index
drwxr-x--- 2 mysql mysql 4096 3月 12 13:23 performance_schema
-rw------- 1 mysql mysql 1680 3月 12 13:23 private_key.pem
-rw-r--r-- 1 mysql mysql 452 3月 12 13:23 public_key.pem
-rw-r--r-- 1 mysql mysql 1112 3月 12 13:23 server-cert.pem
-rw------- 1 mysql mysql 1676 3月 12 13:23 server-key.pem
drwxr-x--- 2 mysql mysql 12288 3月 12 13:23 sys
[root@openeuler mysql]#
四、使用systemd管理mysql
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/home/application/mysql/app/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#reload从新加载下systemd
[root@db01 mysql]# systemctl daemon-reload
#systemd 管理相关命令
systemctl start mysqld
五、创建root用户密码,并管理用户
[root@db01 ~]# mysqladmin -uroot -p password XXX新密码
#创建数据库
mysql> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)
#创建用户
mysql> CREATE USER 'zabbix'@'%' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.01 sec)
#授权用户
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%';
Query OK, 0 rows affected (0.01 sec)
#刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
六、可能遇到的问题
mysql登录报错
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解决方法:
#找到libtinfo.so.6.3
find /usr/ -name 'libtinfo*'
ln -s /usr/lib64/libtinfo.so.6.3 /usr/lib64/libtinfo.so.5