环境准备
Mysql的安装
https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html
下载地址
https://mirror.tuna.tsinghua.edu.cn/mysql/downloads/
1、查看mysql的版本信息
mysql -V
2、安装mysql
1、在线安装
以 mysql:5.7.26
第一种方式:配置myslq安装源
yum install wget
yum -y install yum-utils
#wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
#sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
#sudo dnf config-manager --disable mysql80-community
sudo dnf config-manager --enable mysql57-community
vi /etc/yum.repos.d/mysql-community.repo
###########################################
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
######################或者############################
yum install -y mysql-community-common-5.7.33 mysql-community-server-5.7.33 mysql-community-client-5.7.26 mysql-community-libs-5.7.33
yum install -y mysql-community-common-5.7.33 mysql-community-server-5.7.33 mysql-community-client-5.7.33 mysql-community-libs-5.7.33
yum clean all
yum makecache
yum search mysql
yum错误
[root@localhost ~]# cd /var/lib/rpm
[root@localhost rpm]# ll
total 97412
-rw-r--r--. 1 root root 1839104 Jul 11 06:45 Basenames
-rw-r--r--. 1 root root 8192 Jul 11 06:41 Conflictname
-rw-r--r--. 1 root root 270336 Jul 11 06:48 __db.001
-rw-r--r--. 1 root root 81920 Jul 11 06:48 __db.002
-rw-r--r--. 1 root root 1318912 Jul 11 06:48 __db.003
-rw-r--r--. 1 root root 606208 Jul 11 06:45 Dirnames
-rw-r--r--. 1 root root 16384 Jul 11 06:45 Group
-rw-r--r--. 1 root root 12288 Jul 11 06:45 Installtid
-rw-r--r--. 1 root root 28672 Jul 11 06:45 Name
-rw-r--r--. 1 root root 16384 Jul 11 06:41 Obsoletename
-rw-r--r--. 1 root root 93446144 Jul 11 06:45 Packages
-rw-r--r--. 1 root root 1957888 Jul 11 06:45 Providename
-rw-r--r--. 1 root root 180224 Jul 11 06:45 Requirename
-rw-r--r--. 1 root root 49152 Jul 11 06:45 Sha1header
-rw-r--r--. 1 root root 32768 Jul 11 06:45 Sigmd5
-rw-r--r--. 1 root root 8192 Jul 11 06:41 Triggername
[root@localhost rpm]# rm -rf __db.* # 清除原 rpmdb 文件
[root@localhost rpm]# rpm --rebuilddb # 重建 rpm 数据库
[root@localhost rpm]# yum clean all # 清除所有 yum 缓存
卸载mysql
yum remove mysql mysql-server mysql-libs compat-mysql51
rm -rf /var/lib/mysql
rm /etc/my.cnf
rpm -qa|grep mysql
rpm -qa | grep -i mysql
rpm -e MySQL-serverxxx
rpm -e MySQL-clientxxx
find / -name mysql
安装mysql
yum install -y mysql-community-common-5.7.23 mysql-community-server-5.7.23 mysql-community-client-5.7.23 mysql-community-libs-5.7.23
启动mysql测试
systemctl start mysqld.service
查看mysql日志
cat /var/log/mysqld.log
ss -lnt|grep 3306
修改mysql配置
vi /etc/my.cnf
###############
[mysqld]
validate_password=off
修改密码
alter user 'root'@'localhost' identified by '123'
###退出重新登录
开启防火墙
firewall-cmd --list-all-zones #查看所有的zone信息
firewall-cmd --add-port=3306/tcp --permanent //打开3306端口
firewall-cmd --reload #重新加载配置
以MySQL8.0为例
1、检查系统中是否有系统自带的mysql服务,如果有的话先卸载自带
查看自带安装的mysql
rpm -qa|grep -i mysql
查看mysql的运行状态并停止
service mysqld status
#并
service mysqld stop
service mysqld start
卸载安装的mysql(安装包服务版本依据自己系统的修改)
(1)卸载相关服务
rpm -ev mysql-community-client-8.0.32-1.el7.x86_64 --nodeps
rpm -ev mysql-community-common-8.0.32-1.el7.x86_64 --nodeps
rpm -ev mysql-community-server-8.0.32-1.el7.x86_64 --nodeps
rpm -ev mysql-community-libs-8.0.32-1.el7.x86_64 --nodeps
(2)查询并删除Mysql相关目录
find / -name mysql
rm -rf /var/lib/mysql/
rm -rf /usr/lib64/mysql
rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /etc/selinux/targeted/tmp/modules/100/mysql
#删除my.cnf:
rm-rf /etc/my.cnf
#删除MySQL的默认密码:
rm-rf /root/.mysql_sercret
(3) 查询并删除mariadb的安装包
#查询:
rpm -qa | grep mariadb
#卸载:
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
#检查卸载情况,如果还有继续删除卸载
rpm -qa|grep -i mysql
安装MySQL并配置
1、配置Mysql 8.0安装源
yum -y localinstall mysql80-community-release-el8-1.noarch.rpm
2、安装MySQL服务
yum install mysql-community-server
**注意:**安装服务如果提示 Failing package is: mysql-community-client-8.0.32-1.el8.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql这个错误,
如果是centos8:
cd /etc/yum.repos.d/
sed -i ‘s/mirrorlist/#mirrorlist/g’ /etc/yum.repos.d/CentOS-*
sed -i ‘s|#baseurl=http://mirror.centos.org|baseuri=http://vault.centos.org|g’ /etc/yum.repos.d/CentOS-*
yum update
执行以下命令重新获取
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再重新尝试安装,安装成功
3、启动MySql服务
systemctl start mysqld
systemctl enable mysqld
service mysqld status
4、查看默认密码
grep 'temporary password' /var/log/mysql/mysqld.log
5、登录MySQL重置密码
mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
#ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(提示这个错误是mysql密码初始设置规则为大小写字母+数字+特殊字符)
#先按照规则设置一个密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Test@321#!';
#修改mysql密码校验规则与密码长度(必须先修改密码,否则这个无法执行)
set global validate_password.policy=0;
set global validate_password.length=1;
6、授权
(1)远程登录授权
update mysql.user set host='%' where user="root";
flush privileges;
select user,host from mysql.user;
(2)用户授权
grant all privileges on *.* to 'root'@'%';
flush privileges;
show grants for root@'%'\G;
7、查看并开启防火墙3306端口
#查看:
firewall-cmd --query-port=3306/tcp
#开启:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#重载:
firewall-cmd --reload
脚本
#/bin/bash
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
mkdir /home/etc
cp /etc/yum.repos.d /home/etc
yum makecache
yum update -y
yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-server --nogpgcheck -y
systemctl start mysqld
systemctl enable mysqld
service mysqld status
/var/log/mysql
grep 'temporary password' /var/log/mysql/mysqld.log>> /home/mysql.log
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
2、源码安装
下载myslq8.0源码
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35.tar.gz
准备
# 检查用户组是否存在
cat /etc/group | grep mysql
# 检查用户是否存在
cat /etc/passwd | grep mysql
# 添加用户组
groupadd mysql
# 添加用户
useradd -r -g mysql -s /bin/false mysql
#如果是centos8:
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
安装gcc
yum search gcc-toolset
yum install -y gcc-toolset-xx
scl enable gcc-toolset-10 bash #切换的gcc10版本
编译
#cmake .. -D CMAKE_C_COMPILER=/usr/bin/gcc -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/opt/mysql/mysql8 -#DCPACK_MONOLITHIC_INSTALL=1 -DWITH_DEBUG=0 -DWITH_SSL=system -DWITH_BOOST=/opt/mysql/boost
3、docker安装
docker安装mysql8.0
配置docker-compose
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install --allowerasing docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker
systemctl start docker
yum install python-pip python-dev
pip install docker-compose
yum install epel-release python3-pip python3-devel
pip3 install --upgrade pip --default-timeout=1000
pip3 install docker-compose --default-timeout=1000
docker-compose -v
设置国内镜像源
vim /etc/docker/daemon.json
{
"registry-mirrors":
[
"https://dockerhub.azk8s.cn",
"https://registry.docker-cn.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
重启docker服务使配置生效
systemctl daemon-reload
systemctl restart docker
docker-compose mysql8.0
version: '3.1'
services:
mysqldb:
restart: always
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: "Test@123#!"
MYSQL_ROOT_HOST: "%"
TZ: Asia/Shanghai
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- 3306:3306
volumes:
- "/opt/mysql/mysql8.0/conf/my.cnf:/etc/mysql/my.cnf"
- "/opt/mysql/mysql8.0/data:/var/lib/mysql"
adminer:
image: adminer
restart: always
ports:
- 13306:8080
my.cnf
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
skip-name-resolve
user=mysql
ngram_token_size=2
default_password_lifetime=0
port=3306
#设置安装目录
#数据存放目录
#允许最大连接数
max_connections=1000
#服务端默认使用的字符集
character-set-server=utf8mb4
#创捷新表时默认的储存引擎
default-storage-engine=INNODB
#忘记密码时使用
#skip-grant-tables
#不区分大小写
lower_case_table_names=1
#认证方式
default_authentication_plugin=mysql_native_password
max_allowed_packet=500M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
wait_timeout=28800
interactive_timeout=28800
max_connect_errors=100
max_user_connections=0
#日志文件大小
# max_binlog_size=100M
#
#开启二进制日志
log-bin=mysql-bin
#标识唯一id(必须),一般使用ip最后位
server-id=1
#不同步的数据库,可设置多个
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
#指定需要同步的数据库(和slave是相互匹配的),可以设置多个
#binlog-do-db=test
#设置binlog的格式
binlog_format=statement
max_binlog_size=500M
sync_binlog=1
expire-logs-days=7
slow_query_log
docker-compose up -d
docker ps -a
备注 https://download.docker.com/linux/centos/8/x86_64/stable/Packages/
4、离线安装
参考mysql官网