环境准备※
#1)查看系统环境
cat /etc/redhat-release #<==操作系统版本。
#2)关闭selinux:
setenforce 0 #临时关闭selinux
getenforce #查看关闭selinux
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 firewalld
systemctl disable firewalld
方法一:yum 安装※
采用默认的yum安装时,无法安装mysql,因为CentOS7开始已经在官方库把默认的mysql换成了开源的mariadb了。如果要用yum方式安装mysql,必须先下载安装MySQL源才行。
- 关闭selinux:
setenforce 0
getenforce
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
- 卸载mariadb依赖包
rpm -qa|grep mariadb #<==查找已经安装的mariadb的包。
mariadb-libs-5.5.68-1.el7.x86_64
yum remove mariadb-libs -y #<==卸载系统已经安装的mariadb依赖包。
- 下载mysql安装源
在MySQL官网中下载YUM源rpm安装包:https://dev.mysql.com/downloads/repo/yum/ 或者直接执行下面命令
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
rpm -ivh mysql80-community-release-el7-11.noarch.rpm
---
查看安装的mysql源
# rpm -ql mysql80-community-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
/etc/yum.repos.d/mysql-community-source.repo
/etc/yum.repos.d/mysql-community.repo
- 开始安装mysql
yum install mysql-community-server -y
启动mysql服务,并检查启动状态
mysqld --initialize-insecure --user=mysql
systemctl start mysqld
# netstat -lntup|grep 330
看3306端口
登录测试
直接mysql登录
方法二:二进制部署※
- 创建用户
useradd mysql -s /sbin/nologin -M #<==创建mysql用户。
- 下载二进制安装包
阿里镜像地址:https://mirrors.aliyun.com/mysql/
官网地址:https://dev.mysql.com/downloads/mysql/
- 解压缩,软连接,或者移动到ls -l /usr/local/mysql
- 创建MySQL数据目录、配置文件(/etc/my.cnf)并授权
cat>/etc/my.cnf<<'EOF'
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
port=3306
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
EOF
#授权:
chown mysql.mysql /etc/my.cnf
#创建对应MySQL数据目录并授权
mkdir -p /data/3306/data
chown -R mysql.mysql /data
ls -ld /data
配置PATH环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
加载生效并检查
. /etc/profile
echo $PATH
#3)初始化MySQL数据库(注意换行符\)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql \
--basedir=/usr/local/mysql --datadir=/data/3306/data
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
初始化
#4)初始化的知识
重点知识1 : 之前不同版本的初始化命令异同
#5.7之前初始化
/usr/local/mysql/scripts/mysql_install_db
#5.7和8.0初始化
/usr/local/mysql/bin/mysqld
- 重点知识2: --initialize和--initialize-insecure区别
- --initialize: 会生成一个12位,4种密码复杂度临时管理员密码. 第一次登陆需要修改.
- --initialize-insecure:管理员密码为空.
- 来自8.0官方翻译 :
mysql_install_db程序已从MySQL发行版中删除。数据目录初始化应通过使用 --initialize
或--initialize-insecure选项调用mysqld来执行。 此外,删除了mysql_install_db使用的
mysqld选项,并删除了控制mysql_install_db安装位置的选项。
设置system启动:
#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
#3.检查MySQL数据库是否启动。
netstat -lntup|grep 330
#4.查看MySQL数据库启动结果日志。
cat /data/3306/data/db01.err
方法三,源码包安装(相比二进制安装,多了编译过程)※
下载:https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.0.tar.gz
安装编译依赖(CentOS 和 Debian)
在 CentOS 上:
sudo yum groupinstall 'Development Tools'
sudo yum install cmake ncurses-devel openssl-devel bison pkg-config
在 Debian 上:
sudo apt-get update
sudo apt-get install build-essential cmake libncurses5-dev libssl-dev bison
编译选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
# 将 MySQL 安装到 /usr/local/mysql 目录。
-DMYSQL_DATADIR=/var/lib/mysql
# 将数据文件存储在 /var/lib/mysql 目录。
-DDEFAULT_CHARSET=utf8
# 设置默认字符集为 utf8。
-DDEFAULT_COLLATION=utf8_general_ci
# 设置默认排序规则为 utf8_general_ci。
-DWITH_BOOST=/usr/local/boost
# 指定 Boost 库的位置。
-DDOWNLOAD_BOOST=1
# 如果 Boost 库不存在,则下载它。
-DWITH_SSL=system
# 启用系统的 SSL 支持。
引擎支持:
WITH_INNOBASE_STORAGE_ENGINE:启用 InnoDB 存储引擎。
例:-DWITH_INNOBASE_STORAGE_ENGINE=1
WITH_PARTITION_STORAGE_ENGINE:启用分区存储引擎。
例:-DWITH_PARTITION_STORAGE_ENGINE=1
WITH_ARCHIVE_STORAGE_ENGINE:启用 ARCHIVE 存储引擎。
例:-DWITH_ARCHIVE_STORAGE_ENGINE=1
WITH_BLACKHOLE_STORAGE_ENGINE:启用 BLACKHOLE 存储引擎。
例:-DWITH_BLACKHOLE_STORAGE_ENGINE=1
WITH_FEDERATED_STORAGE_ENGINE:启用 FEDERATED 存储引擎。
例:-DWITH_FEDERATED_STORAGE_ENGINE=1
cmake "dir" \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/var/lib/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_BOOST=/usr/local/boost \
-DDOWNLOAD_BOOST=1 \
-DWITH_SSL=system \
-DWITH_DEBUG=0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1
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 #3.检查MySQL数据库是否启动。 netstat -lntup|grep 330 #4.查看MySQL数据库启动结果日志。 cat /data/3306/data/db01.err ##问题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.授权的主机范围不对.
编译过程遇到的问题:
1,需要新创建一个文件加存放构建目录
2,然后如果构建失败的话
# 清理构建目录
rm -rf /usr/local/src/mysql8
mkdir -p /usr/local/src/mysql8
# 清理源代码目录中的 CMake 生成的文件
cd /usr/local/src/mysql-8.4.0
rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
3,安装pkg-config
sudo apt update
sudo apt install pkg-config