20190526 - CentOS 7 中 安装 MySQL 8 并授权 root 远程访问
1. CentOS 7 中 安装 MySQL 8
CentOS 7 中内置 MariaDB 建议升级一下用,性能好很多。但如果一定要用 MySQL 8,就得自己装。
坦白的说,Oracle 升级 MySQL 8,一方面是 5.7 性能不如 MariaDB,二个就是为了造坑(以安全的名义)。
2. MySQL 8 授权 root 远程访问
MySQL 8 授权 root 远程访问绝对是坑,以往的旧命令都会提示失败,因为安全原因,尤其是在 CentOS 7 这种安全的系统上。
% 是什么?
是 MySQL 对地址的通配符,默认 root 用户的 host 是 localhost,不要去修改,要加一行 'root'@'%',当然这是开发环境,生产环境建议用其他用户。
skip-grant-tables 是什么?
是 MySQL 的选项,即具备本地权限时,直接跳过授权表直接修改 mysql 数据库。
如果不注意,可能会陷入授权死锁(加了不能授权,去掉不能登录),此时加上,并 update 清空 root@localhost 密码可以解决。
可以 修改 /etc/my.cnf 加入 skip-grant-tables 一行,搞完事再改回去,也可以
service mysqld stop; mysqld_safe --skip-grant-tables &
这样运行的 mysql 就是没有铠甲的,你可以聪明的用各种 select insert delete update 搞事情,当然,搞砸了别跑路。
MySQL 8 中授权关键在此,这两句需要连续运行。
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'Password!@123'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
3. 吐槽 SQLyog
Webyog 的 SQLyog 本来属于那种原生的很 man 的,不像 MySQL WorkBench 那样软绵绵的,天知道他们用了什么开发。
曾今为 SQLyog 提交过自动写 SQL 的代码,生成原生 insert update delete select 语句及快捷键的设置,都是本人贡献的 C/C++ 代码,当然,那是在 google code 时代。
但如今 SQLyog 居然连 MySQL 8 的 plugin:caching_sha2_password 都不支持,依然只支持旧模式 mysql_native_password
可 Navicat 支持啊,SQLyog 真是一手好牌打烂了。
真心写了一篇奇怪的笔记。