尝鲜 Mysql 8.0的初体验
一、Mysql 8.x的新特性
近期mysql更新了一个新版本8.x,主要更新了哪些特性呢?
- 对Unicode 9.0的开箱即用的完整支持
- 支持窗口函数和递归SQL语法,这在以往是不可能或者很难才能编写这样的查询语句
- 对原生JSON数据和文档存储功能的增强支持MySQL 8.0的发布.由于6.0修改和7.0是用来保留做MySQL的集群版本,因此采用了8.0的版本号。
- 在锁定行方面增加了更多选项,如SKIP LOCKED和NOWAIT两个选项。其中, SKIP LOCKED允许在操作中不锁定那些需要忽略的行;NOWAIT则在遇到行的锁定的时候马上抛出错误。
- MySQL能根据可用内存的总量去伸缩扩展,以更好利用虚拟机的部署。
- 新增“隐藏索引”的特性,这样索引可以在查询优化器中变为不可见。索引在标记为不可用后,和表的数据更改同步,但是优化器不会使用它们。对于使用隐藏索引的建议,是当不决定某个索引是否需要保留的时候,可以使用。
二、下载Mysql 8.x
- 打开官网https://www.mysql.com/downloads 选择MySQL Community Edition 版
- 选择操作系统,这里选择Redhat 7.x的全家桶版本!
三、安装Mysql
-
上传安装包到服务器.
-
解压压缩包
mkdir mysql && tar -xvf mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar -C ./mysql
该命令会把压缩包解压到当前目录下的mysql目录下. -
安装mysql
- 为了保险起见先关闭防火墙
systemctl stop firewalld
- 关闭SE linux
setenforce 0
- 卸载mariadb-libs
yum remove mariadb* -y && yum clean all
- 安装openssl
yum install openssl-*
- 安装net-tools
yum install net-tools
- 安装common模块
rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
- 安装libs模块
rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm
- 安装libs-compat模块
rpm -ivh mysql-community-libs-compat-8.0.11-1.el7.x86_64.rpm
- 安装devel 模块
rpm -ivh mysql-community-devel-8.0.11-1.el7.x86_64.rpm
- 安装client模块
rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm
- 安装server模块
rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
- 为了保险起见先关闭防火墙
-
启动mysql服务
-
启动服务
systemctl start mysqld
-
检查服务是否启动成功
systemc status mysqld.
-
启动成功后,mysql会默认生成root密码,可以在启动日志中查看
cat /var/log/mysqld.log.
-
尝试登陆
mysql -uroot -p
输入刚才生成密码. -
由于刚才生成的密码只是mysql的临时密码,所以需要重新设置root密码,不然操作mysql会出错误提示,并拒绝操作.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
提示必须重置用户密码. -
重置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'test110119';
使用这句语句来重置密码,但可能会收到一个安全策略引起的错误提示Your password does not satisfy the current policy requirements
该错误的意思,密码太简单了.密码设置复杂点就ok了.也可以修改安全策略(validate_password_policy),validate_password_policy有以下几个值可以参考.
Policy Tests Performed comment 0
orLOW
Length 必须符合长度 1
orMEDIUM
Length; numeric, lowercase/uppercase, and special characters 必须符合长度,包含数字,大小写,特殊字符 1
orMEDIUM
Length; numeric, lowercase/uppercase, and special characters; dictionary file 必须符合长度,包含数字,大小写,特殊字符,字典文件 validate_password_policy 默认值为1,如果要重置可以使用
set global validate_password_policy=0
,改为0,密码就只校验长度了.笔者这里不选择修改策略的方式,而是采用复杂的密码.
-
四、远程登录
安装好mysql之后发现能够在本地登录,不能远程登录.这是因为mysql限制了root用户的远程登录的权限,稍作修改就好.远程访问一般有两种方法,一种是改表法,另外一种是授权法.改表法,比较简单,只要把mysql中的user表root用户的host改为%就ok了
- 切换数据库
use mysql;
- 修改user表
update user set host = '%' where user='root';
- 重启mysql
systemctl restart mysqld
- Ok 搞定
总结
linux安装mysql的时候,依赖比较复杂安装的时候一定要注意.如果使用客户端连接不上并提示Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found
的话,重新修改密码的加密方式就可以,或者客户端支持sha2
的加密方式.修改密码加密方式:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';