MySQL 社区版: 开源 免费, 不提供技术支持, 需要配合开源工具来使用.
MySQL 企业版: 和社区版本代码一样, 通过插件提供额外功能特性, 比社区版本增加线程插件, 审计插件. 等额外的功能特性
MySQL cluseter cge 集群商业版. 是一个实时开源事务数据库, 专为在高吞吐量条件下快速, 永久地访问数据而设计. 支持, 并行分布式查询引擎. 自动分区伸缩, 内存实时数据库等.
MySQL 安装可以用 docker 利用镜像生成容器部署, 优点快速, 缺点, docker 利用镜像生成容器, 容器的稳定性较差. 需要利用 k8s 等编排工具进行容器编排. 安全性较差. docker 与宿主机共享内核, 和文件系统. 且需要时常更新官方发布的 cve 漏洞补丁.
mysql8.0 新增特性
1 文档存储使用单个数据库开发 SQL 和 NoSQL 文档应用程序.
2 事务数据字典实现为一组存储在单个 InnoDB 表空间中的 SQL 表.
3 SQL 角色用于授予和拒绝用户组的权限, 大大减少了安全工作量.
4 对于更丰富的移动应用程序和国际字符集, 默认为 utf8mb4 字符集.
5 MySQL 8.0 中添加了通用表表达式, 也称为 WITH 查询.
6 窗口函数可降低代码复杂性并帮助开发人员提高工作效率.
7 隐形索引, 可以更好地管理全天候运行的应用程序的软件升级和数据库更改
8 降序索引以消除对结果进行排序的需要并导致性能改进
MySQL 二进制安装 Linux-generic
根据官方 8.0 参考手册安装地址如下
https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
安装前要卸载 mariadb
rpm -qa | grep mairadb
rpm -e --nodes 卸载
第一步下载 选择 8.0 版本 上传到服务器解压
我在解压到 / opt 目录下
tar -Jxvf MySQL-8.0.12-Linux-glibc2.12-x86_64.tar.xz
首先关闭 selinux 和防火墙.
- setenforce 0
- systemctl stop firewalld.service
MySQL 依赖于 libaio 库文件 要安装 libaio.(不安装初始化的时候会失败, 阿里云网易 yum 源速度快, CentOS7 系统默认安装)
yum clean all rm -rf /etc/yum.repos.d/C* wget http://mirrors.163.com/.help/CentOS7-Base-163.repo mv CentOS7-Base-163.repo /etc/yum.repos.d/netease.repo yum makecache yum install gcc gcc-c++ openssl openssl-devel libaio libaio-devel ncurses ncurses-devel -y
创建 MySQL 用户和组, 并设置禁止登陆系统
groupadd MySQL useradd -r -g MySQL -s /bin/false MySQL
创建一个目录链接
cd /opt/ ln -s /opt/MySQL-8.0.12-Linux-glibc2.12-x86_64/ MySQL
创建数据目录和日志目录
cd /opt mkdir data mkdir log chmod 755 /opt/MySQL/log chmod 755 /opt/MySQL/data
配置 my.cnf
[mysqld] port=3306 datadir=/opt/MySQL/data log-error=/opt/MySQL/MySQL-err.log user=MySQL default_authentication_plugin=mysql_native_password [client] socket=/tmp/MySQL.sock
配置环境变量
echo "export PATH=$PATH:/opt/mysql/bin" >> /etc/profile source /etc/profile
初始化数据库
/opt/MySQL/bin/mysqld --initialize --user=MySQL 记住初始化密码
设置启动文件
/opt/MySQL/support-files/MySQL.server /etc/init.d/mysqld VIM /etc/init.d/mysqld
更改 basedir = /opt/MySQL/
datadir = /opt/MySQL/data
更改执行权限 chmod+755 /etc/init.d/mysqld
systemctl restart mysqld 启动服务
或者利用 mysql_safe 启动
mysqld_safe --user=MySQL
利用刚才记录的密码登陆数据库, 并更改密码
ALTER user 'root'@'localhost' IDENTIFIED BY 'mysql'; FLUSH PRIVILEGES;
来源: http://www.linuxidc.com/Linux/2019-01/156602.htm