1,查看系统版本
cat /etc/kylin-release
nkvers
2,检查系统是否存在MySQL或MariaDB,如果存在需要先卸载
rpm -qa | grep mariadb
rpm -qa | grep mysql
3,安装MySQL运行必须依赖包
yum install -y perl-Data-Dumper libaio libaio-devel
yum install -y ncurses ncurses-devel ncurses-base ncurses-libs
yum install -y openssl openssl-devel openssl-libs
yum install -y bzip2 bzip2-devel
yum install -y libtirpc libtirpc-devel
yum install -y readline readline-devel
4.1,MySQL官网下载二进制安装包
https://dev.mysql.com/downloads/mysql/
Select Operating System 选择Linux-Generic,Select OS Version 中有两选择,第一个是选择glibc2.12(X86_64),第二个是选择glibc2.17(X86_64)
选择glibc_2.17(X86_64)版本
4.2,上传MySQL二进制包
将MySQL 8.0.30的二进制包上传到/opt目录并解压到/usr/local目录
cd /opt
tar xvf mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar.xz -C /usr/local/
mv /usr/local/mysql-8.0.30-linux-glibc2.17-x86_64-minimal /usr/local/mysql-8.0.30
4.3,创建MySQL用户和用户组
groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql
4.4,创建MySQL目录并授权
#创建MySQL数据目录
mkdir -p /data/mysql
#创建MySQL日志目录
mkdir -p /var/log/mysql
chown mysql:mysql -R /data/mysql
chown mysql:mysql -R /var/log/mysql
4.5,MySQL环境变量
(1)创建mysql目录软连接
ln -s /usr/local/mysql-8.0.30 /usr/local/mysql
chown -R mysql.mysql mysql-8.0.30
(2)创建MySQL环境变量配置文件
echo 'MYSQL_HOME=/usr/local/mysql' >> /etc/profile.d/mysql.sh
echo 'PATH=$PATH:$MYSQL_HOME/bin' >> /etc/profile.d/mysql.sh
echo 'export PATH' >> /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
4.6,创建my.cnf配置文件
编辑/etc/my.cnf文件
vim /etc/my.cnf
[server]
[mysqld]
#skip-grant-tables
datadir=/data/mysql
basedir=/usr/local/mysql
socket=/data/mysql/mysql.sock
log-error=/var/log/mysql/mysql.log
max_connections=1000
connect_timeout = 60
wait_timeout=600
interactive_timeout=600
lock_wait_timeout=3600
skip_name_resolve=1
skip_external_locking=1
open_files_limit=65535
explicit_defaults_for_timestamp=1
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
general-log=1
general-log-file=/var/log/mysql/sql_row.log
key_buffer_size=1M
read_buffer_size=4M
read_rnd_buffer_size=2M
table_open_cache=1024
table_definition_cache=1024
table_open_cache_instances=64
thread_cache_size=512
sort_buffer_size=16M
join_buffer_size=64M
bulk_insert_buffer_size=64M
tmp_table_size=64M
max_heap_table_size=776M
symbolic-links=0
max_allowed_packet =512M
bind-address =0.0.0.0
innodb_file_per_table=1
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=8
innodb_buffer_pool_load_at_startup=1
innodb_buffer_pool_dump_at_shutdown=1
innodb_log_file_size=1G
innodb_log_buffer_size=32M
innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit=0
innodb_lock_wait_timeout=600
innodb_autoinc_lock_mode=2
innodb_doublewrite=OFF
innodb_thread_concurrency=16
innodb_flush_method=O_DIRECT
innodb_io_capacity=2000
innodb_io_capacity_max=4000
innodb_write_io_threads=32
innodb_read_io_threads=16
innodb_purge_threads=4
innodb_page_cleaners=4
innodb_open_files=65535
innodb_max_dirty_pages_pct=50
innodb_lru_scan_depth=4000
innodb_status_file=1
innodb_change_buffer_max_size=50
innodb_open_files=10000
open_files_limit=10000
[client]
socket=/data/mysql/mysql.sock
4.7,初始化数据库
mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
4.8,配置systemctl mysqld服务
vim /usr/lib/systemd/system/mysql.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
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
4.9,启动mysql服务
#启动mysqld服务
systemctl start mysql
#查看mysqld服务状态
systemctl status mysql
#开机启动mysqld服务
systemctl enable mysql
5,登录MySQL
在MySQL初始化(initialize)完成后会自动为MySQL的root用户生成一个随机初始化密码,记录在MySQL的log-error日志文件中
(1)查找初始化密码
grep password /var/log/mysql/mysql.log
(2)登录数据库
mysql -uroot -p
(3)修改root密码
初始化密码登录MySQL后只能执行修改密码的操作,其它任何操作是不能执行的,使用以下命令修改密码
alter user 'root'@'localhost' identified by "123456";
flush privileges;
6,配置数据库用户登录权限
查看user表中用户远程登录授权,host字段是localhost,说明用户只能本地登录
select host, user, plugin from mysql.user;
设置数据库远程连接
update mysql.user set host='%' where user='root';
#刷新权限
FLUSH PRIVILEGES;
7,更新用户账户密码的存储方式,默认使用caching_sha2_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
ALTER USER zabbix@'%' IDENTIFIED WITH mysql_native_password BY 'password';
8,创建zabbix数据库,创建用户并授权
#登录数据库
mysql -uroot -ppassword
#创建zabbix 数据库
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
#创建zabbix 用户
mysql> create user 'zabbix'@'%' identified by 'password';
#授权localhost 访问
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
#刷新策略
flush privileges;
#退出
mysql> quit;
MySQL 8.0 官方文档
https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html