MySQL下载地址

1. RPM安装

1.1 安装步骤

  1. # 解压
  2. [root@test-mysql src]# tar xvf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
  3. [root@test-mysql src]# ll -h
  4. total 1.1G
  5. -rw-r--r-- 1 root root 517M May 6 15:37 mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
  6. -rw-r--r-- 1 7155 31415 26M Mar 24 2020 mysql-community-client-5.7.30-1.el7.x86_64.rpm
  7. -rw-r--r-- 1 7155 31415 312K Mar 24 2020 mysql-community-common-5.7.30-1.el7.x86_64.rpm
  8. -rw-r--r-- 1 7155 31415 3.8M Mar 24 2020 mysql-community-devel-5.7.30-1.el7.x86_64.rpm
  9. -rw-r--r-- 1 7155 31415 46M Mar 24 2020 mysql-community-embedded-5.7.30-1.el7.x86_64.rpm
  10. -rw-r--r-- 1 7155 31415 23M Mar 24 2020 mysql-community-embedded-compat-5.7.30-1.el7.x86_64.rpm
  11. -rw-r--r-- 1 7155 31415 125M Mar 24 2020 mysql-community-embedded-devel-5.7.30-1.el7.x86_64.rpm
  12. -rw-r--r-- 1 7155 31415 2.4M Mar 24 2020 mysql-community-libs-5.7.30-1.el7.x86_64.rpm
  13. -rw-r--r-- 1 7155 31415 1.3M Mar 24 2020 mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm
  14. -rw-r--r-- 1 7155 31415 174M Mar 24 2020 mysql-community-server-5.7.30-1.el7.x86_64.rpm
  15. -rw-r--r-- 1 7155 31415 118M Mar 24 2020 mysql-community-test-5.7.30-1.el7.x86_64.rpm
  16. # 卸载MyriaDB
  17. [root@test-mysql src]# rpm -qa | grep mariadb
  18. mariadb-libs-5.5.68-1.el7.x86_64
  19. [root@test-mysql src]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
  20. warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
  21. # 包之间有依赖关系,需要按以下进行顺序安装
  22. [root@test-mysql src]# yum -y install ./mysql-community-common-5.7.30-1.el7.x86_64.rpm
  23. [root@test-mysql src]# yum -y install ./mysql-community-libs-*
  24. [root@test-mysql src]# yum -y install ./mysql-community-client-5.7.30-1.el7.x86_64.rpm
  25. [root@test-mysql src]# yum -y install ./mysql-community-server-5.7.30-1.el7.x86_64.rpm
  26. [root@test-mysql src]# yum -y install ./mysql-community-devel-5.7.30-1.el7.x86_64.rpm
  27. # 启动MySQL
  28. [root@test-mysql src]# systemctl enable --now mysqld
  29. # 获取初始密码
  30. [root@test-mysql src]# awk '/temporary password/{print $NF}' /var/log/mysqld.log
  31. tsfjiXGDn6:f
  32. # 修改root登录口令
  33. mysqladmin -uroot -p'tsfjiXGDn6:f' password 'Wzk@123.com'
  34. # 登录mysql
  35. mysql -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 安装前准备

  1. yum -y install libaio ncurses-compat-libs
  2. # CentOS 如果没有 libaio 和 ncurses-compat-libs 包,会提示以下错误,其他版本错误类似
  3. [root@centos82 local]#mysqld --initialize --user=mysql --datadir=/data/mysql
  4. mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
  5. [root@centos82 local]#mysql -uroot -p744123
  6. mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
  7. # Ubunru 如果没有安装 libncurses5 包,会提示以下错误
  8. [root@U20-02:~]# mysql -uroot -p
  9. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared objectfile: No such file or directory

2.2 安装步骤

  1. # 将压缩包解压到指定目录
  2. tar xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
  3. tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
  4. # 进入解压缩目录
  5. cd /usr/local/
  6. # 建立软连接并更改权限
  7. ln -s mysql-5.7.30-linux-glibc2.12-x86_64 mysql
  8. ln -s mysql-8.0.20-linux-glibc2.12-x86_64 mysql
  9. chown -R root.root /usr/local/mysql/
  10. # mysql用户组和用户的创建
  11. groupadd -r -g 306 mysql
  12. useradd -r -u 306 -g 306 -s /sbin/nologin mysql
  13. # 环境变量设置
  14. ## 方法1:
  15. echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
  16. source /etc/profile.d/mysql.sh
  17. ## 方法2:
  18. ln -s /usr/local/mysql/bin/* /usr/local/bin/
  19. # 准备配置文件
  20. vim /etc/my.cnf
  21. [mysqld]
  22. datadir=/data/mysql
  23. skip_name_resolve=1
  24. socket=/data/mysql/mysql.sock
  25. log-error=/data/mysql/mysql.log
  26. pid-file=/data/mysql/mysql.pid
  27. [client]
  28. socket=/data/mysql/mysql.sock
  29. [mysql]
  30. auto-rehash
  31. prompt="\\u@\\h [\\d]>"
  32. # 创建目录
  33. mkdir -p /data/mysql
  34. # 修改目录权限
  35. chown -R mysql.mysql /data
  36. # 初始化数据库
  37. mysqld --initialize --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
  38. # 准备服务启动脚本
  39. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
  40. # 启动mysql
  41. chkconfig --add mysqld
  42. service mysqld start
  43. # 提取root初始化密码
  44. awk '/temporary password/{print $NF}' /data/mysql/mysql.log
  45. # 修改root登录口令
  46. mysqladmin -uroot -p'Gzd4nvcg!&/+' password 'Wzk@123.com'
  47. # 登录mysql
  48. mysql -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的时候会有如下报错。

    1. CMake Error at plugin/group_replication/libmysqlgcs/rpcgen.cmake:100 (MESSAGE):
    2. Could not find rpcgen
    3. Call Stack (most recent call first):
    4. plugin/group_replication/libmysqlgcs/CMakeLists.txt:38 (INCLUDE)
  • 编译时间较长,注意安排时间。

    3.2 MySQL 5.7

    3.2.1编译安装 rpcsvc-proto-1.4.2

    1. tar xvf rpcsvc-proto-1.4.2.tar.xz
    2. cd rpcsvc-proto-1.4.2/
    3. ./configure
    4. make -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;

  1. <a name="b618f8e5"></a>
  2. ## 3.3 MySQL 8.0
  3. <a name="733cd35b-1"></a>
  4. ### 3.3.1 编译安装 rpcsvc-proto-1.4.2
  5. ```bash
  6. tar xvf rpcsvc-proto-1.4.2.tar.xz
  7. cd rpcsvc-proto-1.4.2/
  8. ./configure
  9. make -j 2 ; make install

3.3.2 编译安装 gcc

  1. tar xvf gcc-10.2.0.tar.gz
  2. cd gcc-10.2.0/
  3. # 下载必要的库
  4. ./contrib/download_prerequisites
  5. ./configure --prefix=/usr/local/gcc --enable-languages=c,c++ --disable-multilib
  6. make -j 8 && make install
  7. # 修改软连接,查看gcc版本,或者删除旧版,将新版安装目录/bin添加到PATH变量中
  8. mv /usr/bin/gcc /usr/bin/gcc_old
  9. ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc
  10. mv /usr/bin/g++ /usr/bin/g++_old
  11. ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
  12. gcc --verson
  13. g++ --version

3.3.3 编译安装 cmake

  1. tar xvf cmake-3.18.4.tar.gz
  2. cd cmake-3.18.4/
  3. ./bootstrap --prefix=/usr/local/cmake
  4. make -j 8 && make install

3.3.4 编译安装 mysql

  1. # 安装相关依赖包
  2. yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel bison openssl-devel libtirpc-devel
  3. # 创建用户及用户组
  4. groupadd -r mysql
  5. useradd -r -g mysql -s /sbin/nologin mysql
  6. # 准备mysql目录
  7. mkdir /data/mysql
  8. chown mysql.mysql /data/mysql
  9. ## 将压缩包解压到指定目录
  10. tar xvf boost_1_70_0.tar.gz -C /usr/local/
  11. tar xvf mysql-8.0.20.tar.gz
  12. # 编译安装
  13. cd mysql-8.0.20/
  14. cmake . \
  15. -DCMAKE_INSTALL_PREFIX=/apps/mysql \
  16. -DMYSQL_DATADIR=/data/mysql \
  17. -DSYSCONFDIR=/etc \
  18. -DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock \
  19. -DEXTRA_CHARSETS=all \
  20. -DDEFAULT_CHARSET=utf8mb4 \
  21. -DDEFAULT_COLLATION=utf8mb4_unicode_ci \
  22. -DWITH_MYISAM_STORAGE_ENGINE=1 \
  23. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  24. -DWITH_PARTITION_STORAGE_ENGINE=1 \
  25. -DENABLED_LOCAL_INFILE=1 \
  26. -DENABLED_PROFILING=1 \
  27. -DMYSQL_TCP_PORT=3306 \
  28. -DWITH_DEBUG=0 \
  29. -DDOWNLOAD_BOOST=0 \
  30. -DWITH_BOOST=/usr/local/boost_1_70_0
  31. make -j 8 && make install
  32. # 环境变量设置
  33. ## 方法1:
  34. echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
  35. . /etc/profile.d/mysql.sh
  36. ## 方法2:
  37. ln -s /apps/mysql/bin/* /usr/local/bin/
  38. # 准备配置文件
  39. vim /etc/my.cnf
  40. [mysqld]
  41. datadir=/data/mysql
  42. skip_name_resolve=1
  43. socket=/data/mysql/mysql.sock
  44. log-error=/data/mysql/mysql.log
  45. pid-file=/data/mysql/mysql.pid
  46. [client]
  47. default-character-set=utf8mb4
  48. socket=/data/mysql/mysql.sock
  49. [mysql]
  50. default-character-set=utf8mb4
  51. socket=/data/mysql/mysql.sock
  52. [mysql]
  53. auto-rehash
  54. prompt="\\u@\\h [\\d]>"
  55. # 初始化数据库
  56. mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql
  57. # 准备服务脚本
  58. cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
  59. # 启动mysql
  60. chkconfig --add mysqld
  61. service mysqld start
  62. # 修改root用户密码
  63. ## 方法1:
  64. mysqladmin -uroot password 'newpassword'
  65. ## 方法2 : 需要进入mysql数据库
  66. alter user 'root'@'localhost' identified by 'newpassword';
  67. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';

4. Docker

4.1 设置 MySQL 配置文件

将配置文件和所有关联的文件夹统一放到/opt/docker/mysql目录下:

  1. mkdir /opt/docker/mysql -p

创建配置文件config-file.cnf

  1. vim /opt/docker/mysql/conf.d/config-file.cnf
  2. [mysqld]
  3. skip_name_resolve=1
  4. max_allowed_packet = 1000M
  5. max_connections=1000
  6. log-bin=mysql-bin
  7. binlog-format=ROW
  8. server_id=1
  9. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  10. lower_case_table_names = 1
  11. [mysql]
  12. auto-rehash
  13. prompt="\u@\h [\d]>"
  14. [mysqld_safe]
  15. log-error=/var/log/mysqld.log
  16. pid-file=/var/run/mysqld/mysqld.pid

创建 MySQL 数据文件夹:

  1. mkdir -p /data/mysql/data

4.2 启动容器

  1. docker run --name mysql \
  2. --restart=always \
  3. -p 3306:3306 \
  4. -v /opt/docker/mysql/conf.d:/etc/mysql/conf.d \
  5. -v /data/mysql/data:/var/lib/mysql \
  6. -e MYSQL_ROOT_PASSWORD=123456 \
  7. -e TZ=Asia/Shanghai \
  8. -d mysql:5.7