第2章-MySQL8.0安装方式及安装
2.1 MySQL版本背景与选择
1)MySQL版本发展背景
https://mirrors.aliyun.com/mysql/
2)企业版与社区版
3)社区版版本选择
大方向:GA,退后6-12月,前面没有太多小版本,作为选择.
5.6 : 5.6.40 + 双数版,经典版,官方即将停止更新.
5.7 : 5.7.22/30 + 双数版,主流,逐步过渡到8.0
8.0 : 8.0.26 + 双数版,开始评测,小规模边缘业务数据库使用.
本文着眼于当下和未来,因此,讲解主要以MySQL8.0为主,同时兼顾MySQL 5.7,并尽可能兼顾MySQL5.6,当下的互联网企业是MySQL5.6正逐步淘汰,MySQL 5.7为绝对主流,MySQL8.0时代即将到来。
2.2 MySQL安装方式及选择
数据库:
1.yum 简单 自动解决依赖(默认源没有数据库). 没法定制.
https://www.cnblogs.com/oldboy666/p/15559963.html
2.二进制 比较简单,没办法定制,软件大. ***** 中小企业
3.rpm 复杂 下载 手工解决依赖 没法定制
https://www.cnblogs.com/oldboy666/p/15558992.html
4.源码编译 特别复杂 编译软件gcc都需要升级,可以定制任何东西. 百度\阿里===>改动源码===>编译==>rpm==>yum
2.3 MySQL软件获取
官方:
https://downloads.mysql.com/archives/community/
国内镜像:
https://mirrors.aliyun.com/mysql/
https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
2.4 MySQL最新版8.0.26企业级安装实践
1.MySQL安装硬件环境准备
如果读者没有物理服务器环境,则可以搭建vmware等虚拟机环境学习,相应地则需准备如下内容:
1)VM虚拟机内存最好设置4GB以上。
2)提前下载好要安装的MySQL8.0软件包。
生产物理服务器:
SSD固态+Raid10(Raid5)
内存:64G/128G/256G
2.安装MySQL前软件环境准备
#1)查看系统环境
[root@oldboy ~]# cat /etc/redhat-release #<==操作系统版本。
CentOS Linux release 7.9.2009 (Core)
#2)关闭selinux:
setenforce 0
getenforce
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
#3)卸载mariadb依赖包
yum remove mariadb-libs -y #<==卸载系统已经安装的mariadb依赖包。
#4)安装相关依赖包
yum install ncurses ncurses-devel libaio-devel openssl openssl-devel -y
#5)关闭防火墙
systemctl stop firewalled
3.开始安装MySQL
本书使用DBA人员比较常用、简单得二进制方式安装MySQL,安装过程如下。
(1)建立MySQL用户账号
首先以root身份登录到Linux系统中,然后执行如下命令创建mysql用户账号:
[root@oldboy ~]# useradd mysql -s /sbin/nologin -M #<==创建mysql用户。
[root@oldboy ~]# id mysql
(2)下载、解压mysql软件包,并做好软链接mysql到/usr/local。
[root@oldboy ~]# cd /opt
[root@oldboy opt]# wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
[root@oldboy opt]# tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
[root@oldboy opt]# ln -s /opt/mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql
[root@oldboy opt]# ls -l /usr/local/mysql
###mv /opt/mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql
(3)创建MySQL数据目录、配置文件(/etc/my.cnf)并授权
#1)增加简易配置文件,后面在优化
cat>/etc/my.cnf<<'EOF'
#by oldboy weixin:oldboy0102
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
port=3306
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
EOF
cat /etc/my.cnf
chown mysql.mysql /etc/my.cnf
#2)创建MySQL数据目录并授权
mkdir -p /data/3306/data
chown -R mysql.mysql /data
ls -ld /data
(4)配置PATH环境变量,并初始化MySQL数据库
#1) 配置PATH环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
. /etc/profile
echo $PATH
#2)初始化MySQL数据库
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
重点知识1 : 之前不同版本的初始化命令异同
/usr/local/mysql/scripts/mysql_install_db #5.7之前
/usr/local/mysql/bin/mysqld #5.7和8.0初始化
重点知识2: --initialize和--initialize-insecure区别
--initialize: 会生成一个12位,4种密码复杂度临时管理员密码. 第一次登陆需要修改.
--initialize-insecure:管理员密码为空.
来自8.0官方翻译 by oldboy:
mysql_install_db程序已从MySQL发行版中删除。数据目录初始化应通过使用 --initialize 或--initialize-insecure选项调用mysqld来执行。 此外,删除了mysql_install_db使用的mysqld选项,并删除了控制mysql_install_db安装位置的选项。
(5)初始化数据库的原理及结果说明
初始化数据库的实质就是创建基础的数据库系统的库文件等信息,例如:生成mysql库表等。
2.2.2配置并启动MySQL数据库
1.设置MySQL启动脚本
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysqld #<==拷贝mysql启动脚本到启动路径。
systemctl enable mysqld #<==等价chkconfig mysqld on(c7把服务设置开机自启动命令)
2.启动MySQL数据库
systemctl start mysqld
提示:使用kill -9 ID关闭数据库引起数据库故障案例
http://oldboy.blog.51cto.com/2561410/1431161。
3.检查MySQL数据库是否启动。
netstat -lntup|grep 330
4.查看MySQL数据库启动结果日志。
cat /data/3306/data/oldboy.err
2.2.3登录MySQL测试
执行登录命令如下:
......
2.2.4 MySQL安装常见故障分析及解决方案
问题1:初始化报错libaio
[root@oldboy opt]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
原因:缺少libaio-devel依赖包
解决:yum install libaio-devel -y
如果不知道包名,可以执行 yum provides libaio -y查.
问题2: 初始化报错数据文件目录不为空
2021-11-09T04:08:57.631792Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2021-10-09T04:08:57.631803Z 0 [ERROR] [MY-013236] [Server] The designated data directory /data/3306/data/ is unusable. You can remove all files that the server added to it.
解决:rm -rf /data/3306/data/*
问题3:启动后初始无法登录
[root@oldboy ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
原因:此问题一般都是数据库初始化问题或者数据库文件损坏以及目录权限问题。
解决办法:删除初始化目录,然后重新初始化数据库,剩余过程不变。
rm -rf /data/3306/data/*
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
Access denied问题原因:
1.数据库初始化问题
2.目录权限问题
3.系统数据库文件损坏
4.用户密码不对
5.授权主机范围不对.