一 系统环境
1.1查看系统版本
[root@ecs-2e51-0004 ~]# cat /etc/kylin-release
Kylin Linux Advanced Server release V10 (Sword)
[root@ecs-2e51-0004 ~]# cat /proc/version
Linux version 4.19.90-25.38.v2101.ky10.x86_64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Tue Apr 2 19:32:16 CST 2024
[root@ecs-2e51-0004 ~]# hostnamectl
Static hostname: ecs-2e51-0004
Icon name: computer-vm
Chassis: vm
Machine ID: 517f0e9e0b314922ab417b4a3662a9a1
Boot ID: 812219ee7d73453caf56d3539821c18e
Virtualization: kvm
Operating System: Kylin Linux Advanced Server V10 (Sword)
Kernel: Linux 4.19.90-25.38.v2101.ky10.x86_64
Architecture: x86-64
[root@ecs-2e51-0004 ~]# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server release V10 (Sword)
Kernel:
4.19.90-25.38.v2101.ky10.x86_64
Build:
Kylin Linux Advanced Server
release V10 (SP2) /(Sword)-x86_64-Build09/20210524
#################################################
1.2 卸载系统自带MySQL或MariaDB

1.3 安装MySQL依赖包
yum install -y perl-Data-Dumper libaio libaio-devel ncurses ncurses-devel ncurses-base ncurses-libs openssl openssl-devel openssl-libs bzip2 bzip2-devel libtirpc libtirpc-devel readline readline-devel
1.4 MySQL源码包

1.5 上传安装包并解压
[root@ecs-2e51-0001 ~]# tar -xf mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz -C /usr/local/ && cd /usr/local/
[root@ecs-2e51-0001 local]# mv mysql-8.0.39-linux-glibc2.28-x86_64 mysql-8.0.39
二 配置并启动MySQL(二进制)
2.1 拆功能键MySQL用户和用户组
[root@ecs-2e51-0002 local]# groupadd mysql
[root@ecs-2e51-0002 local]# useradd -M -g mysql -s /sbin/nologin mysql
2.2 创建MySQL数据目录
[root@ecs-2e51-0002 local]# mkdir /data/mysql/{data,log,redo,undo,arch} -p
[root@ecs-2e51-0004 ~]# chown -R mysql: /data
2.3 创建MySQL环境变量
2.3.1创建软连接
[root@ecs-2e51-0002 local]# ln -s /usr/local/mysql-8.0.39 /usr/local/mysql
[root@ecs-2e51-0002 local]# chown -R mysql: mysql-8.0.39
2.3.2 配置环境变量
[root@ecs-2e51-0002 local]# cat /etc/profile.d/mysql.sh
MYSQL_HOME=/usr/local/mysql
PATH=$PATH:$MYSQL_HOME/bin
export PATH
[root@ecs-2e51-0002 local]# source /etc/profile.d/mysql.sh

2.3.3创建my.cnf配置文件
[root@ecs-2e51-0002 local]# cat /etc/my.cnf
[mysql]
socket=/data/mysql/data/mysqld.sock
[mysqld]
###base config###
server-id=210
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/data/mysql/data/mysqld.sock
pid-file=/data/mysql/data/mysqld.pid
log-error=/data/mysql/log/mysqld.log
###query config###
join_buffer_size = 128M
sort_buffer_size = 16M
read_buffer_size = 16M
read_rnd_buffer_size = 8M
###open table config###
table_open_cache=2000
table_open_cache_instances=16
###connection config###
max_connections=2000
thread_cache_size=200
###binlog config###
log_bin=/data/mysql/log/binlog
log_bin_index=/data/mysql/log/binlog.index
binlog_format=ROW
max_binlog_size=1G
binlog_cache_size=16M
binlog_expire_logs_seconds=604800
enforce_gtid_consistency=ON
gtid_mode=ON
###general log config###
general_log=OFF
general_log_file=/data/mysql/log/mysqld.gnl
###slow query config###
log_output=FILE
long_query_time=1
slow_query_log=ON
slow_query_log_file=/data/mysql/log/mysqld.slow
###innodb redo log config###
innodb_log_file_size=1G
innodb_log_files_in_group=3
innodb_log_buffer_size=16M
innodb_log_group_home_dir=/data/mysql/redo
innodb_redo_log_archive_dirs=/data/mysql/arch
###innodb undo log config###
#innodb_max_undo_log_size=1G
#innodb_undo_tablespaces=2
innodb_undo_directory=/data/mysql/undo
###innodb config###
#innodb_data_file_path=ibdata1:12M:autoextend
#innodb_temp_data_file_path=ibtmp1:12M:autoextend
#innodb_temp_tablespaces_dir=./#innodb_temp/
#innodb_autoextend_increment=64
innodb_buffer_pool_size=8G
innodb_open_files=10000
open_files_limit=10000
2.3.4 初始化mysql
[root@ecs-2e51-0004 bin]# pwd
/usr/local/mysql/bin
[root@ecs-2e51-0004 bin]# ./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
2.3.5 配置service启动文件
[root@ecs-2e51-0002 bin]# cat /usr/lib/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
[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 --defaults-group-suffix=@%I $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
[Install]
WantedBy=multi-user.target
2.3.6 加载并启动MySQL
[root@ecs-2e51-0002 bin]# systemctl daemon-reload && systemctl start mysqld.service && systemctl enable mysqld.service && systemctl status mysqld.service

2.4 登录MySQL,更改密码
[root@ecs-2e51-0001 bin]# grep password /data/mysql/log/mysqld.log
2024-07-26T08:21:43.651432Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 219/16GrCk3&
[root@ecs-2e51-0001 bin]# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.39
Copyright (c) 2000, 2024, 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 "密码";
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> status;
--------------
mysql Ver 8.0.39 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 8
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.39
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /data/mysql/data/mysqld.sock
Binary data as: Hexadecimal
Uptime: 1 min 43 sec
Threads: 2 Questions: 7 Slow queries: 0 Opens: 148 Flush tables: 3 Open tables: 64 Queries per second avg: 0.067
--------------

三 配置并启动MySQL(rpm)
3.1 上传安装包

3.2 解压包
[root@abi local]# pwd
/usr/local
[root@abi local]# mkdir mysql
[root@abi src]# tar -xf mysql-8.0.40-1.el8.x86_64.rpm-bundle.tar -C ../mysql
[root@abi src]# cd ../mysql
kylin系统带有mariadb数据库环境,避免冲突,卸载mariadb:
for i in $(rpm -qa | grep mariadb);do rpm -e $i --nodeps; done
[root@abi mysql]# rpm -ivh \
mysql-community-common-8.0.40-1.el8.x86_64.rpm \
mysql-community-client-plugins-8.0.40-1.el8.x86_64.rpm \
mysql-community-libs-8.0.40-1.el8.x86_64.rpm \
mysql-community-client-8.0.40-1.el8.x86_64.rpm \
mysql-community-icu-data-files-8.0.40-1.el8.x86_64.rpm \
mysql-community-server-8.0.40-1.el8.x86_64.rpm \
mysql-community-devel-8.0.40-1.el8.x86_64.rpm --nodeps
报错信息:
警告:mysql-community-common-8.3.0-1.el8.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID a8d3785c: NOKEY
错误:依赖检测失败:
pkgconfig(openssl) 被 mysql-community-devel-8.3.0-1.el8.x86_64 需要
解决方案:
yum install openssl-devel.x86_64 openssl.x86_64 -y
启动mysql:
systemctl start mysqld; systemctl status mysqld; systemctl enable mysqld
查看数据库密码:
cat /var/log/mysqld.log | grep password
登录之后修改密码:
mysql> alter user "root"@"localhost" identified by "密码";
# mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
mysql> FLUSH PRIVILEGES;
查看状态:
mysql> status;
开启远程访问:
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '密码';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
3.3 调整lower_case_table_names参数
lower_case_table_names=1 表示 mysql 是不区分大小写的
lower_case_table_names=0 表示 mysql 是区分大小写的
解决方案:
1,未启动服务之前,在配置文件中添加此参数:
lower_case_table_names=1
2,重新初始化mysql
[root@abi]# ll /var/lib/mysql
总用量 93640
-rw-r----- 1 mysql mysql 56 2月 26 09:26 auto.cnf
-rw-r----- 1 mysql mysql 646 2月 26 09:29 binlog.000001
-rw-r----- 1 mysql mysql 16 2月 26 09:26 binlog.index
-rw------- 1 mysql mysql 1680 2月 26 09:26 ca-key.pem
-rw-r--r-- 1 mysql mysql 1112 2月 26 09:26 ca.pem
-rw-r--r-- 1 mysql mysql 1112 2月 26 09:26 client-cert.pem
-rw------- 1 mysql mysql 1676 2月 26 09:26 client-key.pem
-rw-r----- 1 mysql mysql 196608 2月 26 09:31 '#ib_16384_0.dblwr'
-rw-r----- 1 mysql mysql 8585216 2月 26 09:26 '#ib_16384_1.dblwr'
-rw-r----- 1 mysql mysql 6341 2月 26 09:26 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 2月 26 09:28 ibdata1
。。。。
[root@abi lib]# mv /var/lib/mysql /var/lib/mysql_bak
[root@abi lib]# rm -rf /var/lib/mysql
[root@abi lib]# mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql # 重新初始化mysql
[root@abi lib]# systemctl start mysqld # 启动mysql
[root@abi lib]# systemctl status mysqld; systemctl enable mysqld # 查看状态,设置开机自启动
查看数据库密码:
cat /var/log/mysqld.log | grep password
登录之后修改密码:
mysql> alter user "root"@"localhost" identified by "密码";
mysql> FLUSH PRIVILEGES;
查看状态:
mysql> status;
查看参数值:
mysql> show variables like '%lower%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.00 sec)