1、使用以下命令查看当前安装mysql情况,以及查看包名
rpm -qa|grep -i mysql
2、停止mysql服务、删除之前安装的mysql,该方式可防止有依赖包错误
删除命令:
rpm -ev 包名 --nodeps
例:rpm -ev MySQL-client-5.5.25a-1.rhel5
3、查找之前老版本mysql的目录、并且删除老版本mysql的文件和库
find / -name mysql
删除对应的mysql目录
例如:rm -rf /var/lib/mysql
注意:卸载后/etc/my.cnf不会删除,需要进行手工删除
rm -rf /etc/my.cnf
4、再次查找机器是否安装mysql
rpm -qa|grep -i mysql
无结果,说明已经卸载彻底
(1)先查看自己Linux的内核版本,然后根据版本下载对应的 RPM 包
cat /proc/version #查看内核版本
官网下载MySQL Yum存储库页面:https://dev.mysql.com/downloads/repo/yum/
(2)如本机版本为 3.10.0-1160.el7.x86_64,所以对应的下载版本为:
(3)使用以下命令安装下载的发布包,把包名称换成自己下载的版本
sudo yum install mysql80-community-release-el7-{version-number}.noarch.rpm
(4)可以通过以下命令检查MySQL Yum存储库是否已成功添加
yum repolist enabled | grep "mysql.*-community.*"
成功的输出如下,是mysql相关的文件
(5)下载好Mysql安装包之后,根据自己的需求,安装需要的版本,如果安装的是最新版本,可以直接跳转到(6)步,因为默认安装是最新版本,但是我是安装的5.7版本,所以要找对应的系列
1)查看MySQL Yum存储库中的所有子存储库,并查看哪些子存储库已启用或禁用,默认最新版本是启用的
yum repolist all | grep mysql
2)若要安装的是除最新版本以外的系列,可以需要手动命令启用子存储库,或者直接修改配置文件启用,如下命令启用5.7,禁用8.0
sudo yum-config-manager --enable mysql57-community
sudo yum-config-manager --disable mysql80-community
还可以通过手动编辑文件来选择发布序列,进入配置文档
vim /etc/yum.repos.d/mysql-community.repo
然后找到对应的选项进行修改成如下:
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
#Enable to use MySQL 8.0
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
3)通过运行以下命令并检查其输出,验证是否已启用和禁用正确的子存储库
yum repolist enabled | grep mysql
(6)安装Mysql
1)执行以下语句进行安装
sudo yum install mysql-community-server
但是此处一直报错:
获取 GPG 密钥失败:[Errno 14] curl#37 - “Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022”
是因为 /etc/pki/rpm-gpg 文件里面找不到密钥相关的文件,所以需要执行如下语句,将文件下载下来
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
systemctl start mysqld #启动
systemctl status mysqld #状态查看
(7)以上步骤即可完成Mysql的yum安装,接下来就是配置root账号,然后登入数据库
1)先进入以下文件,查看root账号的密码
sudo grep 'temporary password' /var/log/mysqld.log
2)记住密码,用root账号即可登入数据库,进入数据库后需要立即修改root密码
mysql -uroot -p
(1)下载rpm包
1)直接在Oracle官网下载rpm包:https://dev.mysql.com/downloads/mysql/
根据自己的操作系统和对应版本,找到要下载的tar包,此处为Linux7
下载后的文件可能需要挪动位置,移到自己想要存放的位置,移动方式如下:
先进入 下载文件夹所在位置,找到下载好的tar包
然后将文件进行移动,以下是移动到 opt
mv mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar /opt/
2)也可以直接通过命令在线的方式下载,命令后面的为要安装的对应版本的tar包名称
wget http://dev.mysql.com/get/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
(2)下载之后即可进行安装,安装的所有文件对应路径请参照官方文档
1)进入安装包所在路径,解压安装包
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
2)删除自带的数据库 mariadb,否则会跟 mysql 发生冲突
rpm -qa | grep mari
若存在则进行删除
rpm -e --nodeps mariadb-libs
rpm -e --nodeps marisa
3)可以直接用yum安装管理器安装,更加方便,下面语句即可直接安装
sudo yum install mysql-community-{server,client,common,libs}-*
也可以使用 rpm -ivh 命令进行安装,但是更容易出现故障,因为安装过程可能会遇到潜在的依赖性问题
rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm
但是在安装的时候一直报错:依赖检测失败,某包被某包所需要
解决办法是在四句的命令语句后面添加 --nodeps --force
–nodeps 就是安装时不检查依赖关系,即当A被B需要,但是没有A的时候,B也可以安装
–force 就是强制安装
用法如下:
rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm --nodeps --force
(3)以上方式即可实现rpm安装,数据库的登入请参照yum安装
(1)docker容器的下载和安装
1)此处下载阿里云的镜像,官网下载太慢
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2)安装Docker CE,Docker CE指的是docker社区版,提供了简单的安装和快速的安装,以便可以立即开始开发
yum -y install docker-ce docker-ce-cli containerd.io
3)启动docker,查看docker状态
systemctl start docker #启动docker
systemctl status docker #查看docker状态
(2)Mysql的下载和安装
1)在docker中下载Mysql镜像,mysql:5.7.35 此为要下载的版本,可自定义
docker pull mysql:5.7.35
2)查看当前docker的所有镜像,看是不是已经下载了所需要的镜像,有的话说明已经安装成功
docker images
3)安装成功后,启动指定的mysql容器,初始数据库密码为root,此时数据库成功启动,有对应实例
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.35
4)查看容器的运行实例的名字 ,找到要登入的mysql容器的名字
docker ps -a
docker exec -it 容器的名字 bash
6)登入mysql,默认密码为 root
mysql -u root -p
7)退出mysql容器
Ctrl + d 退出并停止容器;
Ctrl + p + q 退出并在后台运行容器
8) 查看所有实例运行
docker ps -a
9)删除实例
docker rm 实例名称 #(CONTAINER ID)
10) 停止实例
docker stop 575e36be87a7 #(CONTAINER ID)
11)删除mysql镜像
docker rmi 3147495b3a5c #IMAGE ID
查看目前docker里面的镜像是否还有被删除的
docker images
12)若出现以下报错,这是因为本机已经有该容器名了,不能再次启动
docker: Error response from daemon: Conflict. The container name “/mysql” is already in use by container
查找目前运行中的所有实例 docker ps -a ,若该实例可以删除,才能把该实例删掉 docker rm 55dc49ce09e6
然后重新启动指定的数据库
但是不支持删除实例,因为实例下有数据库,可以给mysql容器重命名。
1)下载二进制安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
2)解压安装包到 /usr/src/ ,并重命名文件夹,此时mysql的相关文件已经加载到指定目录下
tar zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/src/ #解压安装包
mv mysql-5.7.30-linux-glibc2.12-x86_64/ mysql #重命名文件夹为mysql
3)创建运行用户
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
4)手动创建数据目录,并授权
mkdir -p /data/mysql
chown -R mysql /data/mysql/
5)对数据库安装目录进行授权设置,即 2)中的mysql相关文件所在目录
chown -R mysql:mysql /usr/src/mysql/
6)手动创建 vim /etc/my.cnf 配置文件,并将以下信息添加进去
[client]
port = 3306
socket = /data/mysql/mysql.sock
[mysqld]
port = 3306
socket = /data/mysql/mysql.sock
user = mysql
basedir = /usr/src/mysql
datadir = /data/mysql
skip-external-locking
key_buffer_size = 32M #索引缓冲区大小
max_allowed_packet = 1024M #允许运行最大的数据包是多少
table_open_cache = 128 #表高速缓存的数量
sort_buffer_size = 768K #执行排序使用的缓冲大小
net_buffer_length = 8K #向网络连接发送数据时使用的缓冲区的大小
read_buffer_size = 768K #表顺序扫描的缓存大小
read_rnd_buffer_size = 512K #表随机顺序扫描的缓存大小
myisam_sort_buffer_size = 8M #执行排序使用的缓冲大小
query_cache_size = 16M #查询缓存
tmp_table_size = 32M #sql执行时生成的临时表的内存缓存大小
performance_schema_max_table_instances = 1000 #。。。
explicit_defaults_for_timestamp = true #timestamp列默认为null
#skip-networking #跳过密码登入
max_connect_errors = 100 #允许连接错误的最大次数
open_files_limit = 65535 #进程能使用的最大文件描述符数量
log_bin=mysql-bin
binlog_format=mixed
server_id = 232
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB #默认存储引擎
innodb_file_per_table = 1 #开启独立表空间
innodb_buffer_pool_size = 128M #表数据和索引数据的最大内存缓冲区大小
innodb_log_file_size = 32M #日志文件大小
innodb_log_buffer_size = 8M #日志文件缓存大小
innodb_flush_log_at_trx_commit = 1 #日志刷新提交方式
innodb_lock_wait_timeout = 50 #锁超时异常时间
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M
7)进入mysql安装目录
cd /usr/src/mysql
进行初始化mysql
/usr/src/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/src/mysql --datadir=/data/mysql
root初始化密码需要记录下来
8)将msql添加到环境变量
echo "export PATH=$PATH:/usr/src/mysql/bin" >> /etc/profile
. /etc/profile #立即生效
9)将support-files文件夹下的mysql.server脚本文件,复制到/etc/rc.d/init.d目录下,并改名为mysqld,然后再设置执行权限
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
10)将mysqld添加为systemd标准服务,方便以后使用“systemctl”命令进行管理
vim /lib/systemd/system/mysqld.service
将以下信息添加进去
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/mysqld start
ExecReload=/etc/rc.d/init.d/mysqld restart
ExecStop=/etc/rc.d/init.d/mysqld stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
11)依次执行下列的语句
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
netstat -lnt
12)以上操作即可实现mysql数据库的二进制安装
待更新。。。
此处作为笔记进行梳理,具体请参看官方文档https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/upgrading.html
(1)就地升级 还在研究中~~~~~~
1)下载最新版mysql 8 二进制安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
2)原地解压安装包,并重命名文件夹,将文件移动到 /usr/src/ ,此时mysql的相关文件已经加载到指定目录下
tar xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz #解压安装包
mv mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz mysql8 #重命名文件夹为mysql8
将根目录下的文件复制到指定文件夹下 /usr/src/mysql8/
cp -a mysql8 /usr/src/mysql8/
删除原文件
rm -rf mysql8
3)对数据库新的安装目录进行授权设置,即 2)中的mysql8相关文件所在目录
chown -R mysql:mysql /usr/src/mysql8
4)把MySQL的软连接指向新的mysql服务
unlink /usr/src/mysql/mysql
ln -s /usr/src/mysql8 /usr/src/mysql
5)使用现有数据目录启动新MySQL8服务器
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
6)运行mysql_upgrade
mysql_upgrade -u root -p
7)关闭并重新启动MySQL服务器以确保对系统表所做的任何更改都生效
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
systemctl start mysqld #重启
systemctl status mysqld #查看数据库状态
(2)逻辑升级
直接下载安装新版本,然后把原先的数据文件进行导出,新版本安装好后,直接导入数据文件,具体参看官方文档
1)停止MySQL服务器(容器名称在此实例中),参看 docker安装的(2)的 4)点
docker stop mysql #对应的数据库实例名字
2)拉取要升级的新版本,此处拉取8.0.22
docker pull mysql:8.0.22
3)将旧服务器数据和配置挂载到本地目录下,src=本地目录,如果没有文件夹,需要创建
docker run --name=mysql8.0.22 \
-p 3306:3306 \
--privileged=true \
--mount type=bind,src=/etc/mysql,dst=/etc/my.cnf \
--mount type=bind,src=/var/lib/mysql,dst=/var/lib/mysql \
--restart=always \
-d mysql:8.0.22 #版本号
本地创建文件夹
mkdir -p /etc/mysql
mkdir -p /var/lib/mysql
4)需要通过在MySQL 8.0 Server容器中运行mysql_upgrade实用程序来完成升级过程
docker exec -it mysql8.0.22 mysql_upgrade -uroot -p
5)重新启动新容器完成升级
docker restart mysql8.0.22
6)查看当前运行的实例,可以看到 IMAGE 已经都是最新版本
docker ps -a
7)按原先的 数据库容器的名字 进入容器
docker exec -it mysql bash
mysql -u root -p