Archlinux或Manjaro安装MYSQL8

都说MySql8.x比5.7快两倍,可以参考一下。
但不支持从 MySQL 8.0 降级到 MySQL 5.7(或从某个 MySQL 8.0 版本降级到任意一个更早的 MySQL 8.0 版本)。数据备份方式还是可以的。

  • 注意MySql8 的用户安全策略的改变
  • 注意MySql8 编码格式

安装

先查看有没有 mariadb

1
sudo pacman -Qs mariadb

有就强制卸载

1
sudo pacman -R xxx

安装

1
sudo pacman -S mysql

初始化配置

1
2
3
4
5
6
# 初始化,最后会输出密码
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
# 开机自起
systemctl enable mysqld

查看安装日志中的密码

1
cat /var/log/mysqld.log | grep password

登录

1
mysql -uroot -p

比如这个uQ3sw%Cu;IKk复制粘贴就可以了。

修改密码

1
2
3
4
5
6
alter user 'root'@'localhost' identified  by "123456";
# alter user 'root'@'localhost' identified WITH caching_sha2_password by "123456";
#创建远程连接
create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%';
flush privileges;

无密码的方式,可用于找回密码。

输入一百次也输入不对默认密码 配置文件 MySQL 免密码登录 编辑 MySQL 的配置文件

1
2
3
vim /etc/my.cnf
#在 datadir开头的下面一行加入下面这句
skip-grant-tables

修改密码(记得删除my.cnf文件的东西)

1
2
3
bin/mysql 
use mysql;
update user SET Password = 'new-password' WHERE User = 'root';

基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[mysqld]
basedir=/var/lib/mysql
datadir=/var/lib/mysql
port=3336
character-set-server=utf8mb4
# 下面这个选项是可以选择的
#default_authentication_plugin=mysql_native_password

#排序规则
collation-server=utf8mb4_0900_ai_ci
#utf8mb4_0900_ai_ci 排序规则:ai 口音不敏感 ci 不区分大小写 ,默认支持表情符号
#utf8mb4_0900_ai_ci 属于 utf8mb4_unicode_ci 中的一种
#utf8mb4_general_ci 没有实现utf8mb4_unicode_ci 的排序规则。没有utf8mb4_unicode_ci 准备。但是比较和排序的时候更快
[mysql]
default-character-set=utf8mb4
# 不使用密码进入
# skip-grant-table

[client]
default-character-set=utf8mb4

问题

问题1 NO_ZERO_DATE

问题描述:安装mysql执行初始化命令mysqld –initialize时出现如下错误:

1
2
3
4
5
6
2021-04-12T05:57:03.198202Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2021-04-12T05:57:03.198234Z 0 [System] [MY-013169] [Server] /usr/bin/mysqld (mysqld 8.0.23) initializing of server in progress as process 6289
2021-04-12T05:57:03.199359Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2021-04-12T05:57:03.199363Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2021-04-12T05:57:03.199405Z 0 [ERROR] [MY-010119] [Server] Aborting
2021-04-12T05:57:03.199471Z 0 [System] [MY-010910] [Server] /usr/bin/mysqld: Shutdown complete (mysqld 8.0.23) Source distribution.

问题原因:根目录下data文件夹问题。一般在初始化前手动建立data文件夹会有问题,需要初始化时自动创建。

解决办法:将根目录下data文件夹删除或修改名字,再次执行初始化命令时会自动简历data文件夹。

问题2 libicuuc.so.65

下载icu4c-65_1-src.zip

1
2
3
4
解压icu4c-65_1-src.zip
cd icu/source
# 这里如果执行失败,就看一下文件中有没有 \n\r,如果有删除\r
./configure

本文地址: Centos7 解压安装MYSQL8

推荐

MySQL8.0创建用户及其配置
MySQL8.0新特性-新的索引方式
MySQL8.0新特性-通用表表达式(CTE)
MySQL8.0新特性-窗口函数
MySQL8.0新特性-InnoDB增强
MySQL8.0新特性-JSON增强
[官方介绍]([https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-functional-key-parts

本文地址: https://github.com/maxzhao-it/blog/post/20858/