1.下载
注意:
Kylin 是基于 CentOS 8 修改的,所以需要下载 Red Hat Enterprise Linux 8 / Oracle Linux 8 (x86, 64-bit), RPM Bundle 版本。
CentOS 7 就选 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle
官网下载地址:https://downloads.mysql.com/archives/community/
wget下载地址:wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.37-1.el8.x86_64.rpm-bundle.tar
这里选择从官网上下载,wget 方式未试过。
2.安装
解压 tar 包:
tar -zxvf mysql-9.1.0-1.el8.x86_64.rpm-bundle.tar -C
-
- mysql-community-serverMySQL 服务端,包含了运行 MySQL 服务所需的文件和程序。
- mysql-community-clientMySQL 客户端,用于连接到 MySQL 服务器
- mysql-community-client-pluginsMySQL 客户端的插件,这些插件提供了额外的功能或特性。
- mysql-community-libs包含 MySQL 客户端和服务器使用的共享库文件。
- mysql-community-icu-data-files包含 MySQL 使用的 ICU(International Components for Unicode)数据文件。
- mysql-community-common包含 MySQL 客户端和服务器共享的一些常用文件和配置。
- mysql-community-libs-compat提供与旧版本 MySQL 库的兼容性支持(MySQL8.0.36已移除该安装包)
检查是否已经安装 mariadb:
# 检查是否已安装 mariadb
rpm -qa | grep mariadb
# 如果有安装
rpm -e mariadb-xxxxxxxxx
# 如果卸载 mariadb 失败,报错什么:libmariadb.so.3()(64bit) 被 (已安裝) rsyslog-8.2006.0-7.p03.ky10.x86_64 需要这种的,直接移除相应的包,有时候是什么postfix啥的
yum remove rsyslog
执行安装 rpm 包,执行顺序如下:
# 1
rpm -ivh mysql-community-common-8.0.37-1.el8.x86_64.rpm
# 2
rpm -ivh mysql-community-client-plugins-8.0.37-1.el8.x86_64.rpm
# 3
rpm -ivh mysql-community-libs-8.0.37-1.el8.x86_64.rpm
# 4
rpm -ivh mysql-community-client-8.0.37-1.el8.x86_64.rpm
# 5
rpm -ivh mysql-community-icu-data-files-8.0.37-1.el8.x86_64.rpm
# 6
rpm -ivh mysql-community-devel-8.0.37-1.el8.x86_64.rpm
# 7
rpm -ivh mysql-community-server-8.0.37-1.el8.x86_64.rpm
# 情况一
rpm -ivh mysql-community-devel-8.0.37-1.el8.x86_64.rpm
# 如果报错
错误:依赖检测失败:
pkgconfig(openssl) 被 mysql-community-devel-8.0.37-1.el7.x86_64 需要
# 解决办法
yum install openssl-devel -y
# 再重新安装devel包
# 如果 yum install openssl-devel -y 执行报错:
Running transaction check
Transaction check succeeded.
Running transaction test
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'yum clean packages'.
Error: Transaction test error:
file /usr/share/man/man1/ssh-keygen.1.gz from install of openssh-8.0p1-10.el8.x86_64 conflicts with file from package openssh-help-8.2p1-16.p12.ky10.noarch
file /usr/share/man/man8/ssh-keysign.8.gz from install of openssh-8.0p1-10.el8.x86_64 conflicts with file from package openssh-help-8.2p1-16.p12.ky10.noarch
file /usr/share/man/man1/scp.1.gz from install of openssh-clients-8.0p1-10.el8.x86_64 conflicts with file from package openssh-help-8.2p1-16.p12.ky10.noarch
file /usr/share/man/man1/sftp.1.gz from install of openssh-clients-8.0p1-10.el8.x86_64 conflicts with file from package openssh-help-8.2p1-16.p12.ky10.noarch
file /usr/share/man/man1/ssh-add.1.gz from install of openssh-clients-8.0p1-10.el8.x86_64 conflicts with file from package openssh-help-8.2p1-16.p12.ky10.noarch
......
# 说明包有冲突,具体冲突包为:openssh-help,执行以下命令:
rpm -q openssh-help
# 再次执行
yum install openssl-devel -y
# 再重新安装devel包
# 情况二
rpm -ivh mysql-community-server-8.0.37-1.el8.x86_64.rpm
警告:mysql-community-server-8.0.37-1.el8.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID a8d3785c: NOKEY
错误:依赖检测失败:
/usr/bin/perl 被 mysql-community-server-8.0.37-1.el8.x86_64 需要
net-tools 被 mysql-community-server-8.0.37-1.el8.x86_64 需要#
# 解决方案
yum install net-tools
yum install -y perl-Module-Install.noarch
# 再次安装community-server包
3.修改配置文件
vi /etc/my.cnf
mysql8 默认目录是 var/lib/mysql
注释掉的配置,加上后各种报错,plugin 找不到
[mysqld]
datadir=/data/mysql #数据文件目录
socket=/data/mysql.sock #socket文件路径
pid-file=/data/mysqld.pid #MySQL服务器进程ID文件的路径
#port=3306 #端口
log-error=/data/log/mysqld.log #运行日志路径
#server_id = 168710 #MySQL实例唯一标识
#log_bin = /data/binlog/mysql-binlog #根据安装路径设置存放binlog存放位置
#binlog_expire_logs_seconds=2592000 #默认二进制日志过期时间为 2592000 秒,等于 30 天(30*24*60*60 秒)
#innodb_redo_log_capacity = 2048M #Redo Log的总容量,8.0.30版本引入
#innodb_log_buffer_size = 32M #日志文件的缓冲区的大小
#innodb_flush_log_at_trx_commit = 1 #默认设置为1,是完全符合 ACID 标准所必需的。日志在每次事务提交时写入并刷新到磁盘
#sync_binlog = 1 #每次事务提交时同步二进制日志
#open_files_limit = 65535 #能打开的文件数上限
#table_open_cache = 1024 #指定一次InnoDB可以打开的最大文件数
#innodb_buffer_pool_size = 12G #内存的80% ,比如系统内存为16G(通过free -g查看),设置为12G
#innodb_purge_threads = 8 #控制回滚段(Undo Segment)清理线程的数量.设置为CPU核数(通过lscpu查看),比如8核,就设置为8
#innodb_write_io_threads = 8 #控制写入 I/O 操作的线程数,值同上
#innodb_read_io_threads = 8 #控制读取 I/O 操作的线程数,值同上
#innodb_max_undo_log_size = 1G #undo阈值,默认值1G
lower_case_table_names = 1 #表名不区分大小写
#max_allowed_packet = 1G #消息缓冲区大小
#character_set_server = utf8mb4 #字符集
#transaction_isolation = REPEATABLE-READ #事务隔离级别,可重复读。默认值为 REPEATABLE-READ.
#slow_query_log = 0 #慢查询功能(0/OFF:关闭;1/ON:开启)
#long_query_time = 2 #超过2秒的sql输出到日志
#max_connections = 2000 #最大连接数
#log_bin_trust_function_creators=1 #允许任何用户(包括没有 SUPER 特权的用户)创建或修改存储过程、函数创建,根据实际情况设置
#sql_mode="NO_ENGINE_SUBSTITUTION" #服务器SQL模式,模式会影响MySQL支持的SQL语法及其执行的数据验证检查。根据实际情况设置
#group_concat_max_len=1024000 #GROUP_CONCAT函数允许的最大结果长度(以字节为单位)。默认值为 1024.
#skip-name-resolve=OFF #是否在检查客户端连接时解析主机名(OFF/ON),根据实际情况设置
#log_timestamps=SYSTEM #日志的显示时间和系统时间保持一致
[client]
socket=/data/mysql.sock #socket文件路径
[mysql]
socket=/data/mysql.sock #socket文件路径
4.初始化
mysqld --initialize --user=mysql --lower-case-table-names=1
# 首次初始化,会在 mysqld.log 日志文件中生成密码,通过以下命令查看,注意路径,启动后日志被清空,莫名其妙!!!
cat /var/log/mysqld.log
5.启动服务
# 启动mysql服务(时间有点长) ,启动失败,清理mysql目录,再执行初始化 systemctl start mysqld # 查看mysql的启动状态 systemctl status mysqld # 用于设置MYSQL的开机自启动 systemctl enable mysqld
6.进入数据库
# 用临时密码登录,joXd%l5J++i> 这个就是临时密码
mysql -uroot -p joXd%l5J++i>
7.修改密码
# 查看密码策略 SHOW VARIABLES LIKE 'validate_password%'; # 提示必须通过alter user 重置密码 You must reset your password using ALTER USER statement before executing this statement. # 设置密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
如果报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
设置密码的验证强度等级:
set global validate_password_policy=LOW; # 强度等级
set global validate_password_length=6; # 密码最低位数
8.设置可以远程登录
# 进入数据库
mysql -uroot -p
# 选择数据库
use mysql;
# 修改可远程
update mysql.user set host='%' where user='root';
# 刷新
flush privileges;
# 退出
exit;
9.设置开机启动
systemctl enable mysqld
文章评论