0%

MySQL 8.0.16 安装配置(Arch Linux)

MySQL与MariaDB

MariaDB 是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。所以现在主流的 Linux 发行版基本都默认使用 MariaDB 作为默认的 MySQL 实现。ArchLinux 已经将Oracle的MySQL移至AUR 中。

安装

  • yay -S mysql

#根据说明初始化MySQL
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql # 此操作会给你生成一个随机root密码(临时)
#启动 mysql 服务
sudo systemctl start mysqld
#可以进行一些安全设置,更改root密码,设置密码复杂度要求,禁止远程登录root帐号等 (建议)
mysql_secure_installation

可能遇到的问题

  • error while loading shared libraries: libicuuc.so.63: cannot open shared object file: No such file or directory
    目前(2019-05-21) Arch Linux 的ICU已经更新到64版了(Unicode组件标准库,以支持世界语言,实现最新版本的Unicode编码标准和Unicode区域设置数据),而AUR仓库里的MySQL还依赖icu63版,这里可以去AUR仓库里安装icu63版。

yay -S icu63

配置

  • MySQL配置文件说明里不建议直接编辑默认配置文件, 我们可以自定义一个配置文件,追加到/etc/mysql/my.cnf

#加载我们自定义的配置文件 /etc/mysql/myl.cnf
sudo tee -a /etc/mysql/my.cnf <<< “!include /etc/mysql/myl.cnf”

  • 编辑配置文件 sudo vim /etc/mysql/myl.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 [mysql]
#配置mysql 命令提示符前缀 [主机名][用户名]@[数据库名] (当前时间)
prompt=[\h][\u]@[\d] (\R:\m)>

#开启自动补全 / no-auto-rehash 关闭
auto-rehash

[mysqld]

#事务隔离级别:读提交
transaction-isolation=READ-COMMITTED

#持久化 redolog 到磁盘,保证异常重启不丢数据 默认1,0关闭
innodb_flush_log_at_trx_commit=1

#持久化 binlog,保证异常重启不丢日志 默认1
sync_binlog=1

常用操作

重置 MySQL root 密码

现在主流Linux发行版基本全部使用systemd作为系统和服务管理器,可以使用systemd 配置 mysqld服务,不再使用mysql_safe。

  1. 停止mysqld守护进程

sudo systemctl stop mysqld

  1. 配置MYSQLD_OPTS环境变量(不启用授权表,不启用网络环境)

sudo systemctl set-environment MYSQLD_OPTS=“–skip-grant-tables --skip-networking”

  1. 重新启动mysql

sudo systemctl start mysqld

  1. 使用空密码重新登录root账户

mysql -u root -p

  1. 清空root 密码

UPDATE mysql.user SET authentication_string=null WHERE User=‘root’;

  1. 取消特权模式,重新启动mysqld服务

sudo systemctl unset-environment MYSQLD_OPTS
sudo systemctl restart mysqld

  1. 更新 root 密码 为 1234

mysql -u root -p
use mysql
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH caching_sha2_password BY ‘1234’;

添加新用户并授权

  • 创建 名为test 密码为123,支持远程登录(%), 使用旧版MySQL密码认证算法(MySQL8引入caching_sha2_password, 之前版本使用mysql_native_password)的用户

CREATE USER ‘test’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123’;

  • 授权 test 用户对test 数据库拥有所有权限

GRANT ALL ON test.* TO ‘test’@‘%’;

深入学习

参考

欢迎关注我的其它发布渠道