快乐学习
前程无忧、中华英才非你莫属!

如何在Linux下完美安装MySQL的最新版本


前言

由于没有真实环境,阿里云的太贵,我们先用虚拟机试试水,据官方介绍,MySQL 8.x  GA之后,对json的支持更加友好,性能上比5.7大幅度的增加2 倍,都已经GA了,哪个公司有mysql性能上的瓶颈,还等啥呢,准备升级吧~。mysql低版本的,时间、服务器空间充足,个人建议还是走逻辑备份~。
或者有个稳定的升级方案,不影响业务的访问。在线升级过程: mysql5.6.40-->mysql5.7.22-->mysql8.0.12.

按照官网和网上的步骤,就没有成功过好么~。还是自己安装一遍,该走的坑都走到,心理就踏实了~。

注意:如果公司还用着MHA的话,还是使用5.7吧,mha版本社区介绍只支持到5.7,或者pxc 也是到5.7  对8.0肯定是不行搭 ~。如果使用8.x版本高可用方案只能用MRG了。
对于MySQ8.0新特性:(就问你每秒180万个查询谁不动心,高出5.7的2倍性能,爽歪歪~)
MySQL 8.0包括显着的性能,安全性和开发人员生产力改进,支持下一代Web,移动,嵌入式和云应用程序。
MySQL 8.0提供:
  • 新! 文档存储使用单个数据库开发SQL和NoSQL文档应用程序。
  • 新! 事务数据字典实现为一组存储在单个InnoDB表空间中的SQL表。
  • 新! SQL角色用于授予和拒绝用户组的权限,大大减少了安全工作量。
  • 新! 对于更丰富的移动应用程序和国际字符集,默认为utf8mb4字符集。
  • 新! MySQL 8.0中添加了通用表表达式,也称为WITH查询。
  • 新! 窗口函数可降低代码复杂性并帮助开发人员提高工作效率。
  • 新! 隐形索引,可以更好地管理全天候运行的应用程序的软件升级和数据库更改。
  • 新! 降序索引以消除对结果进行排序的需要并导致性能改进。
  • 改进! JSON支持包含许多新增功能,包括接受JSON数据并将其作为关系表返回的JSON_TABLE()函数。
  • 改进! 速度提高2倍,并创建新的基准测试记录,每秒最多 180万个查询。
  • 改进! OpenSSL  作为MySQL中的默认TLS / SSL库。
  • 改进! 性能架构,查询速度提高了30倍。
  • 改进! 信息架构,查询速度提高了100倍。
  • 改进! GIS得到了增强,可支持地理和空间参考系统(SRS)。
  • 改进! 复制和InnoDB集群可以更好地扩展大批量应用程序。
来我们先尝个鲜,环境准备: 
 1、准备一个干净的centos 7mini服务器
                           
 2、下载个linux下通用二进制版本的mysql8.0.12  (为什么用介个,后期迁移保证不出问题,可以兼容各大主流linux内核的系统等等。)
                     
                   
由于小编粗心,安装时没有设置网络连接,cenos 7 最新版本网卡默认是不激活的
所以我们要执行
cd  etc/sysconfig/network-scripts/
vi ifcfg-ens33    (把这个文件结尾的ONBOOT=no 改成yes,是自动启用网络连接)
systemctl restart network  
ping www.baidu.com

3、因为我们是全新最小化的Centos 7mini 服务器,已经从根本上保证了,系统没有安装乱七八糟的插件和有mysql的身影。如果有用其他linux系统,要完全删除之后在搞,不然会出问题,

    完全删除mysql可以参;考https://www.ztloo.com/2018/05/17/linux下mysql卸载总结/

4、建议安装到 /usr/local/mysql / 下,解压之后这些目录的介绍
5、安装MySQL依赖
yum search libaio
yum install libaio

6、创建一个mysql用户和组
shell> groupadd mysql
shell> useradd -r -g mysql mysql


7、用迅雷下载mysql8.0.12用winscp上传到centos7 的usr/local/ 下并解压,如果后期做成自动化的,那就把它放到本地的某个地方,写个分发的脚本,到各个机器的制定目录。
精简版的centos 7 tar 不支持bzipd的需要单独装。

yum -y install bzip2

tar xvf mysql-8.0.12-linux-glibc2.12-x86_64.tar -C /usr/local/   
tar xvf mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz -C /usr/local/  

mv /usr/local/mysql-8.0.12-linux-glibc2.12-x86_64/ /usr/local/mysql

8、 创建一个指向tar创建的安装目录的符号链接(如果是直接解压到usr/local 目录下并用mv 改名了,就不用做软连接了)
shell> ln -s /usr/local/mysql mysql

9、创建path,让mysql的命令全局生效
echo "export PATH=$PATH:/usr/local/mysql/bin"  >>  /etc/profile
source /etc/profile

10、 创建一个目录,其位置可以提供给 secure_file_priv系统变量,从而将导入/导出操作限制到该特定目录
cd /usr/local/mysql
shell> mkdir mysql-files

将目录的所有权授予 mysql用户,并将组的所有权授予 mysql组,并为目录设置正确的权限:
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files

11、创建mysql 存放数据的目录,为啥在这创建error 日志,因为初始化的时候,官方的一个bug并不会根据 配置文件创建errorlog。导致报错,所以我们这里手工建立一个。
cd /usr/local/mysql
shell> mkdir data
shell>echo "" > /usr/local/mysql/error.log

12、设置目录权限
chown -R mysql .
chgrp -R mysql .

13、初始化数据库,并生成root用户密码
配置etc下的my.cnf文件,并指定它为默认配置文件
mysql --help | grep my.cnf

vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
symbolic-links=0
default_authentication_plugin=mysql_native_password

[mysqld_safe]
log-error=/usr/local/mysql/error.log
pid-file=/usr/local/mysql/mysql.pid
[client]
socket=/usr/local/mysql/mysql.sock

!includedir /etc/my.cnf.d

配置/usr/local/mysql/support-files/mysql.server  
mysqld_pid_file_path=/usr/local/mysql/mysql.pid
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

shell>mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

生成的密码:S%6cr:rHv;E7
然后data目录下会生成好多文件:就代表我们初始化成功了!

14、首次需要安全启动
/usr/local/mysql/bin/mysqld_safe  --defaults-file=/etc/my.cnf & 

然后我们在打开另一个窗口登陆一下需要使用的密码:S%6cr:rHv;E7

15、 为了方便,我们把server添加到启动命令
cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod  755 /etc/init.d/mysql
/etc/init.d/mysql start 开启
/etc/init.d/mysql stop 停止

16、如果要操作数据库,必须要重置密码:

  root用户的密码,也可以直接修改成root.
ALTER user 'root'@'localhost' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;


注意2:如果密码忘了怎么办,登陆不上数据库怎么办,在my.cnf中的mysqld 下配置: skip-grant-tables   (// 重启mysql :mysql -uroot 即可。修改完密码,并注释掉这个,然后在重启数据库


17:允许用root用户进行远程客户端连接
如果需要远程客户端链接,需要在my.cnf的mysqld下加这个(default_authentication_plugin=mysql_native_password  )参数,
可以兼容之前版本的链接方式。(正常做法是把数据库开放端口注册到防火墙中就可以了,为了方便,我们先临时关闭防火墙,。)
//临时关闭 systemctl stop firewalld //禁止开机启动 systemctl disable firewalld
update user set host='%' where user='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES

这时候通过Navicat 链接竟然报错了,小伙伴不要慌,是因为8.x的版本加密方式变了。不仅要在配置文件里面加*(default_authentication_plugin=mysql_native_password  )这个参数,还得在用户表里设置root账户的加密方式。修改成native的。下面会教大家怎么改:往下看,
我们先看看默认的加密方式,这种方式,官方解释说,绝对安全。直接不兼容一些客户端连接工具,让你知道密码都链接不上,果然很安全。但是为了方便使用,我们还得让他兼容老的链接方式。

mysql> select host,user, plugin from user where user='root';
+------+------+-----------------------+
| host | user | plugin                |
+------+------+-----------------------+
| %    | root | caching_sha2_password |
+------+------+-----------------------+



18.修改native加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;


19.更新 root 用户密码为native模式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

FLUSH PRIVILEGES;

如果还连不上,那就是防火墙的原因了,先禁掉吧。
打赏
赞(0) 打赏
未经允许不得转载:同乐学堂 » 如何在Linux下完美安装MySQL的最新版本

特别的技术,给特别的你!

联系QQ:1071235258QQ群:710045715

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

error: Sorry,暂时内容不可复制!