1. RPM安装
1.1 安装步骤
# 解压[root@test-mysql src]# tar xvf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar[root@test-mysql src]# ll -htotal 1.1G-rw-r--r-- 1 root root 517M May 6 15:37 mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar-rw-r--r-- 1 7155 31415 26M Mar 24 2020 mysql-community-client-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 312K Mar 24 2020 mysql-community-common-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 3.8M Mar 24 2020 mysql-community-devel-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 46M Mar 24 2020 mysql-community-embedded-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 23M Mar 24 2020 mysql-community-embedded-compat-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 125M Mar 24 2020 mysql-community-embedded-devel-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 2.4M Mar 24 2020 mysql-community-libs-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 1.3M Mar 24 2020 mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 174M Mar 24 2020 mysql-community-server-5.7.30-1.el7.x86_64.rpm-rw-r--r-- 1 7155 31415 118M Mar 24 2020 mysql-community-test-5.7.30-1.el7.x86_64.rpm# 卸载MyriaDB[root@test-mysql src]# rpm -qa | grep mariadbmariadb-libs-5.5.68-1.el7.x86_64[root@test-mysql src]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave# 包之间有依赖关系,需要按以下进行顺序安装[root@test-mysql src]# yum -y install ./mysql-community-common-5.7.30-1.el7.x86_64.rpm[root@test-mysql src]# yum -y install ./mysql-community-libs-*[root@test-mysql src]# yum -y install ./mysql-community-client-5.7.30-1.el7.x86_64.rpm[root@test-mysql src]# yum -y install ./mysql-community-server-5.7.30-1.el7.x86_64.rpm[root@test-mysql src]# yum -y install ./mysql-community-devel-5.7.30-1.el7.x86_64.rpm# 启动MySQL[root@test-mysql src]# systemctl enable --now mysqld# 获取初始密码[root@test-mysql src]# awk '/temporary password/{print $NF}' /var/log/mysqld.logtsfjiXGDn6:f# 修改root登录口令mysqladmin -uroot -p'tsfjiXGDn6:f' password 'Wzk@123.com'# 登录mysqlmysql -uroot -p'Wzk@123.com'
1.2 RPM 包简介
| RPM 包 | 简介 |
|---|---|
| mysql-community-server | 数据库服务端与相关工具 |
| mysql-community-client | MySQL 客户端 |
| mysql-community-common | 服务端和客户端常用库文件 |
| mysql-community-devel | 客户端开发用的头文件及库 |
| mysql-community-libs | MySQL 数据库客户端共享库 |
| mysql-community-libs-compat | 兼容老版本的共享库 |
| mysql-community-embedded | MySQL 嵌入式版本 |
| mysql-commercial-embedded-devel | 嵌入式版本的头文件与库 |
| mysql-community-test | MySQL 测试套件 |
2. 二进制安装
2.1 安装前准备
yum -y install libaio ncurses-compat-libs# CentOS 如果没有 libaio 和 ncurses-compat-libs 包,会提示以下错误,其他版本错误类似[root@centos82 local]#mysqld --initialize --user=mysql --datadir=/data/mysqlmysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory[root@centos82 local]#mysql -uroot -p744123mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory# Ubunru 如果没有安装 libncurses5 包,会提示以下错误[root@U20-02:~]# mysql -uroot -pmysql: error while loading shared libraries: libncurses.so.5: cannot open shared objectfile: No such file or directory
2.2 安装步骤
# 将压缩包解压到指定目录tar xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local/# 进入解压缩目录cd /usr/local/# 建立软连接并更改权限ln -s mysql-5.7.30-linux-glibc2.12-x86_64 mysqlln -s mysql-8.0.20-linux-glibc2.12-x86_64 mysqlchown -R root.root /usr/local/mysql/# mysql用户组和用户的创建groupadd -r -g 306 mysqluseradd -r -u 306 -g 306 -s /sbin/nologin mysql# 环境变量设置## 方法1:echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.shsource /etc/profile.d/mysql.sh## 方法2:ln -s /usr/local/mysql/bin/* /usr/local/bin/# 准备配置文件vim /etc/my.cnf[mysqld]datadir=/data/mysqlskip_name_resolve=1socket=/data/mysql/mysql.socklog-error=/data/mysql/mysql.logpid-file=/data/mysql/mysql.pid[client]socket=/data/mysql/mysql.sock[mysql]auto-rehashprompt="\\u@\\h [\\d]>"# 创建目录mkdir -p /data/mysql# 修改目录权限chown -R mysql.mysql /data# 初始化数据库mysqld --initialize --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql# 准备服务启动脚本cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld# 启动mysqlchkconfig --add mysqldservice mysqld start# 提取root初始化密码awk '/temporary password/{print $NF}' /data/mysql/mysql.log# 修改root登录口令mysqladmin -uroot -p'Gzd4nvcg!&/+' password 'Wzk@123.com'# 登录mysqlmysql -uroot -p'Wzk@123.com'
3. 源码编译安装
3.1 注意:
- CentOS 8版本需要额外安装 libtirpc-devel 包
- CentOS 7版本安装mysql 8.0版本需要升级cmake,gcc包版本,CentOS 8版本不需要。
- 源码安装mysql需要有boost库,最好事先下载好,然后在编译的时候指定boost路径,不推荐在线下载,可能会下载非常慢。
- 最好多核编译,内存4G以上。
- password()函数在mysql8.0.11之后版本被废除了,不能用来修改密码了。推荐使用alter命令来修改用户密码。
源码安装mysql需要编译安装rpcsvc-proto包,否则在编译mysql的时候会有如下报错。
CMake Error at plugin/group_replication/libmysqlgcs/rpcgen.cmake:100 (MESSAGE):Could not find rpcgenCall Stack (most recent call first):plugin/group_replication/libmysqlgcs/CMakeLists.txt:38 (INCLUDE)
-
3.2 MySQL 5.7
3.2.1编译安装 rpcsvc-proto-1.4.2
tar xvf rpcsvc-proto-1.4.2.tar.xzcd rpcsvc-proto-1.4.2/./configuremake -j 2 ; make install
3.2.2 编译安装 mysql
```bash
安装相关依赖包
yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel bison
创建用户及用户组
groupadd -r mysql useradd -r -g mysql -s /sbin/nologin mysql
准备mysql目录
mkdir /data/mysql chown mysql.mysql /data/mysql
将压缩包解压到指定目录
tar xvf boost_1_59_0.tar.bz2 -C /usr/local/ tar xvf mysql-5.7.30.tar.gz
编译安装mysql 5.7.30
cd ../mysql-5.7.30
cmake . \ -DCMAKE_INSTALL_PREFIX=/apps/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLED_PROFILING=1 \ -DMYSQL_TCP_PORT=3306 \ -DWITH_DEBUG=0 \ -DWITH_BOOST=/usr/local/boost_1_59_0
make -j 8 && make install
环境变量设置
方法1:
echo ‘PATH=/apps/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh
方法2:
ln -s /apps/mysql/bin/* /usr/local/bin/
准备配置文件
vim /etc/my.cnf [mysqld] datadir=/data/mysql skip_name_resolve=1 socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid
[client] default-character-set=utf8mb4 socket=/data/mysql/mysql.sock
[mysql] default-character-set=utf8mb4 socket=/data/mysql/mysql.sock
[mysql] auto-rehash prompt=”\u@\h [\d]>”
初始化数据库
mysqld —initialize-insecure —user=mysql —basedir=/apps/mysql —datadir=/data/mysql
准备服务脚本
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
启动mysql
chkconfig —add mysqld service mysqld start
修改root用户密码
方法1:
mysqladmin -u root password ‘newpassword’
方法2: 需要进入mysql数据库
update user set authentication_string=PASSWORD(‘newpassword’) where user=’root’; flush privileges;
方法3: 需要进入mysql数据库
alter user ‘root’@’localhost’ identified by ‘newpassword’; flush privileges;
<a name="b618f8e5"></a>## 3.3 MySQL 8.0<a name="733cd35b-1"></a>### 3.3.1 编译安装 rpcsvc-proto-1.4.2```bashtar xvf rpcsvc-proto-1.4.2.tar.xzcd rpcsvc-proto-1.4.2/./configuremake -j 2 ; make install
3.3.2 编译安装 gcc
tar xvf gcc-10.2.0.tar.gzcd gcc-10.2.0/# 下载必要的库./contrib/download_prerequisites./configure --prefix=/usr/local/gcc --enable-languages=c,c++ --disable-multilibmake -j 8 && make install# 修改软连接,查看gcc版本,或者删除旧版,将新版安装目录/bin添加到PATH变量中mv /usr/bin/gcc /usr/bin/gcc_oldln -s /usr/local/gcc/bin/gcc /usr/bin/gccmv /usr/bin/g++ /usr/bin/g++_oldln -s /usr/local/gcc/bin/g++ /usr/bin/g++gcc --versong++ --version
3.3.3 编译安装 cmake
tar xvf cmake-3.18.4.tar.gzcd cmake-3.18.4/./bootstrap --prefix=/usr/local/cmakemake -j 8 && make install
3.3.4 编译安装 mysql
# 安装相关依赖包yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel bison openssl-devel libtirpc-devel# 创建用户及用户组groupadd -r mysqluseradd -r -g mysql -s /sbin/nologin mysql# 准备mysql目录mkdir /data/mysqlchown mysql.mysql /data/mysql## 将压缩包解压到指定目录tar xvf boost_1_70_0.tar.gz -C /usr/local/tar xvf mysql-8.0.20.tar.gz# 编译安装cd mysql-8.0.20/cmake . \-DCMAKE_INSTALL_PREFIX=/apps/mysql \-DMYSQL_DATADIR=/data/mysql \-DSYSCONFDIR=/etc \-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_unicode_ci \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DENABLED_LOCAL_INFILE=1 \-DENABLED_PROFILING=1 \-DMYSQL_TCP_PORT=3306 \-DWITH_DEBUG=0 \-DDOWNLOAD_BOOST=0 \-DWITH_BOOST=/usr/local/boost_1_70_0make -j 8 && make install# 环境变量设置## 方法1:echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh. /etc/profile.d/mysql.sh## 方法2:ln -s /apps/mysql/bin/* /usr/local/bin/# 准备配置文件vim /etc/my.cnf[mysqld]datadir=/data/mysqlskip_name_resolve=1socket=/data/mysql/mysql.socklog-error=/data/mysql/mysql.logpid-file=/data/mysql/mysql.pid[client]default-character-set=utf8mb4socket=/data/mysql/mysql.sock[mysql]default-character-set=utf8mb4socket=/data/mysql/mysql.sock[mysql]auto-rehashprompt="\\u@\\h [\\d]>"# 初始化数据库mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql# 准备服务脚本cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld# 启动mysqlchkconfig --add mysqldservice mysqld start# 修改root用户密码## 方法1:mysqladmin -uroot password 'newpassword'## 方法2 : 需要进入mysql数据库alter user 'root'@'localhost' identified by 'newpassword';ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
4. Docker
4.1 设置 MySQL 配置文件
将配置文件和所有关联的文件夹统一放到/opt/docker/mysql目录下:
mkdir /opt/docker/mysql -p
创建配置文件config-file.cnf:
vim /opt/docker/mysql/conf.d/config-file.cnf[mysqld]skip_name_resolve=1max_allowed_packet = 1000Mmax_connections=1000log-bin=mysql-binbinlog-format=ROWserver_id=1sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONlower_case_table_names = 1[mysql]auto-rehashprompt="\u@\h [\d]>"[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
创建 MySQL 数据文件夹:
mkdir -p /data/mysql/data
4.2 启动容器
docker run --name mysql \--restart=always \-p 3306:3306 \-v /opt/docker/mysql/conf.d:/etc/mysql/conf.d \-v /data/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \-e TZ=Asia/Shanghai \-d mysql:5.7
