「DBMS/MYSQL」- 部署 | 升级

on Ubuntu 21.04 TLS (MySQL Latest)

# 安装数据库服务
apt-get install mysql-server

# 进行初始化设置
mysql_secure_installation

# 测试连接
mysql -u root -p

on Ubuntu 20.04 LTS (MySQL 5.7)

How To Install MySQL 5.7 on Ubuntu 20.04 | ComputingForGeeks

wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
dpkg -i mysql-apt-config_0.8.12-1_all.deb

...
# 在配置过程中,选择 Ubuntu Bionic 版本,选择 MySQL 5.7 版本;
...

apt-get install mysql-server=5.7.37-1ubuntu18.04 \
    mysql-community-server=5.7.37-1ubuntu18.04   \
    mysql-client=5.7.37-1ubuntu18.04             \
    libmysqlclient-dev=5.7.37-1ubuntu18.04

MySQL 5.7 on CentOS 7.x

How to install MySQL 5.6 on CentOS 7
How to Install MySQL on CentOS 7
How to Install MySQL 5.7 on Linux CentOS and Ubuntu

该笔记将记录:在 CentOS 中,安装 MySQL 数据库的方法,以及常见问题的解决方案;

注意事项

1)建议参考官方文档以获取更多安装细节;
2)该安装过程不适用于 MariaDB 数据库;

第一步、添加官方仓库

// 添加官方仓库

# yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
Loaded plugins: fastestmirror
mysql57-community-release-el7-9.noarch.rpm                                                                                                                           | 9.0 kB  00:00:00
Examining /var/tmp/yum-root-EQhZWN/mysql57-community-release-el7-9.noarch.rpm: mysql57-community-release-el7-9.noarch
Marking /var/tmp/yum-root-EQhZWN/mysql57-community-release-el7-9.noarch.rpm to be installed
...
Complete!

// 检查源是否已经启用

# yum repolist enabled | grep "mysql.*-community.*"

// 更新本地缓存

# yum makecache

第二步、安装数据库

# 查看所有可用版本
yum info --showdup mysql-community-server.x86_64 | grep -E 'Version\s+:'

# 根据情况选择需要的版本
yum install -y mysql-community-server-5.7.28
yum install -y mysql-community-server-5.7.22

第三步、启动数据库服务

systemctl enable mysqld.service
systemctl start mysqld.service

第四步、初始化数据库

在安装 MySQL 服务后,无需进行初始化(这与 MariaDB 不同);

在服务启动后会生成默认密码,保存在 /var/log/mysqld.log 日志中:

grep 'temporary password' /var/log/mysqld.log

第五步、登录并修改密码

在首次登录数据库后,如果不修改密码将无法进行其他操作:

# 使用初始化密码登录数据库
mysql -u root -p

# 修改密码
mysql> ALTER USER root@localhost IDENTIFIED BY 'your password';

由于密码策略要求比较高,如果不满足策略要求的密码,会提示如下错误:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

只要足够复杂就可以,比如 ;JAy_9'Z[;=`Lt$c 形式;或者调整密码策略,这里不再赘述;

MySQL 5.6.15 on CentOS 7.x

How to install MySQL 5.6 on CentOS 7
How to Install MySQL on CentOS 7

由于 CentOS 7.4 中自带 MySQL 5.5.60-MariaDB 不满足能要求,因此需要安装 MySQL 5.6 数据库:

#!/bin/sh

# 添加 MySQL 仓库
yum install -y http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*" # 检查源是否生效

# 安装服务
yum install -y mysql-community-server-5.6.15

# 启动并默认启动
systemctl enable mysqld
systemctl start mysqld

# 安全初始化
mysql_secure_installation

# 连接测试,验证数据库是否连接正常
mysql -u root -p

MySQL 5.x on CentOS 6.x (Final)

HOW TO INSTALL MYSQL 5.6 ON CENTOS 6.7

适用于 CentOS 6.9 版本,(其他版本未测试,但也应该适用)

#1 添加仓库
rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
yum makecache

#2 安装应用
yum -y install mysql mysql-server-5.6.15

#3 启动服务
chkconfig mysqld on
service mysqld start

#4 版本验证
mysql --version

MySQL 5.7 on Debian 10

How to install MySQL v5.7 using apt-get?
understanding the output of “apt-cache policy”
MySQL where’s the my.cnf path?
How To Install MySQL on Ubuntu 20.04 | DigitalOcean

第一步、添加官方仓库

安装,需要添加 MySQL 官方源,访问 Download MySQL APT Repository 下载 mysql-apt-config 包到本地,并安装:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb
dpkg -i mysql-apt-config_0.8.10-1_all.deb

配置,在安装过程中,需要配置以选择所需版本:选 MySQL Server & Cluster => ENTER 进入 MySQL 服务版本的选择。因为我们要安装 MySQL 5.7 数据库,选择 mysql-5.7,按下 ENTER 确认,到此 MySQL 的 APT 包仓库就添加并设置结束了;

更新,执行命令更新本地缓存:

apt-get update

第二步、安装数据库

进行安装,现在可以执行apt-get install命令进行安装:

# 查看可用版本
apt-cache show mysql-server
apt-cache policy mysql-server

# 安装特定版本
apt-get install mysql-server=5.7.29-1debian9

设置密码,在安装过程中,会提示你输入数据库 ROOT 密码;

第四步、验证服务版本

检查已经安装的 MySQL 是否为 5.7 版本,执行如下命令:

mysql --version

从输出中可以看出当前为 MySQL 5.7.22 版本;

第五步、启动服务并连接

我们测试系统为 Debian 10,默认使用的 systemd 进行管理服务:

# 启动服务
systemctl start mysql.service

# 设置服务开机启动
systemctl enable mysql.service

# 连接数据库
mysql -h127.0.0.1 -uroot -p

附加说明

在 Debian 10 中,MySQL 配置文件为 /etc/mysql/conf.d/mysqld.cnf(可以手动创建)。使用 mysql --help | grep "Default options" -C 3 命令查看配置文件加载路径;

通过“通用的二进制程序”安装

在 Unix/Linux 上,使用通用二进制文件安装 MySQL 5.7
在 Unix/Linux 上,使用通用二进制文件安装 MySQL 5.6

MySQL/2.2 Installing MySQL on Unix/Linux Using Generic Binaries

#0 系统环境

Kali GNU/Linux Rolling

#1 下载

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

安装依赖的包

# apt-get install libaio1

创建用户及组

# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql

解压二进制程序包

# cd /usr/local
# tar zxvf /path/to/mysql-VERSION-OS.tar.gz
# ln -s full-path-to-mysql-VERSION-OS mysql

进行初始化操作

# cd mysql
# mkdir mysql-files
# chown mysql:mysql mysql-files
# chmod 750 mysql-files
# bin/mysqld –initialize –user=mysql
# bin/mysql_ssl_rsa_setup
# bin/mysqld_safe –user=mysql &

可选步骤

# cp support-files/mysql.server /etc/init.d/mysql.server

通过源码编译安装(MySQL 5.6)

#!/bin/sh

cd /usr/local/src

################################################################################
# 编译安装
################################################################################
# 安装依赖
yum -y install   make wget gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* \
    libxml* ncurses-devel libmcrypt libtool-ltdl-devel* bison bison-devel \
    ncurses-devel perl perl-devel

# 下载安装 cmake 编译工具
wget http://yum.example.com/source/mysql/cmake-2.8.10.2.tar.gz
tar -zxvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./configure --prefix=/usr/local/cmake
make && make install
cd /usr/local/src

# 下载 MySQL5.6 源码包
wget http://yum.example.com/source/mysql/mysql-5.6.14.tar.gz
tar -zxvf mysql-5.6.14.tar.gz
cd mysql-5.6.14
mkdir source_downloads
cd source_downloads
wget http://yum.example.com/source/mysql/gmock-1.6.0.zip
cd ..

# 进行编译
/usr/local/cmake/bin/cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/mysqldata/data \
    -DSYSCONFDIR=/etc \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci

# 如果编译报错则退出 shell
if [ $? -gt 0 ];then
	exit0
fi
make && make install

################################################################################
# 初始化并启动数据库
################################################################################
cd /usr/local/src

#创建运行 mysql 的用户
useradd mysql

#初始化 mysql 数据库
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf、
    --basedir=/usr/local/mysql --datadir=/mysqldata/data --user=mysql

#将 mysql 命令写入环境变量,并重新加载环境变量配置文件
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

#把 mysql 启动文件考入 init.d 并加入开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on

cd /usr/local/src
mv /etc/my.cnf /etc/my.cnf.bak
service mysql start

#无法启动
groupadd myslq
useradd -g mysql mysql
mkdir -p /mysqldata/data
chown -R mysql:mysql /mysqldata/data
#修改 /etc/my.cnf  datadir 改为 /mysqldata/data
#提示找不到 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

通过 Docker Compose 部署

Docker Hub / mysql – Official Image | https://hub.docker.com/_/mysql/?tab=description

MySQL 5.7

version: '3.1'

services:

  mysql-57:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password --max-connections=10000
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 0YKm24TV4qdbb
      TZ: Asia/Shanghai
    ports:
    - 3306:3306
    volumes:
    - ./data:/var/lib/mysql/

MySQL 8.0

MySQL 8.0.22,Ubuntu 22.04.4 LTS,能够成功运行。

CPU does not support x86-64-v2 in the latest 8.4.0 · Issue #1055 · docker-library/mysql
MySQL 8.0.37,Ubuntu 22.04.4 LTS,产生 …… Fatal glibc error: CPU does not support x86-64-v2 …… 错误,需要调整虚拟化平台 CPU 类型。例如,使用 Host 类型。或,更换镜像,mysql 8.4.0-oraclelinux8 来解决问题。