MySQL数据库存在多种版本,不同的版本在不同的平台上(OS,也就是操作系统上)安装方式可能有所不同,因此安装时一定要参数官方文档进行安装。 MySQL :: MySQL Documentation
选择需要的MySQL官方提供的不同版本,点击后在选择MySQL对应版本的,就可以找到安装教程,如意MySQL5.7为例:https://dev.mysql.com/doc/refman/5.7/en/installing.html
可以选择平台对应的安装方式。
1.RPM安装
(1)离线安装
<1>下载RPM安装包
[root@node4 ~]# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
[root@node4 ~]# ll mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
-rw-r--r--. 1 root root 570583040 Jun 22 21:31 mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
<2>解压
[root@node4 ~]# mkdir mysql
[root@node4 ~]# tar xvf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar -C mysql
[root@node4 ~]# cd mysql/
[root@node4 mysql]# ll
total 557208
-rw-r--r--. 1 7155 31415 32652444 Jun 22 21:27 mysql-community-client-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 320780 Jun 22 21:27 mysql-community-common-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 4969828 Jun 22 21:27 mysql-community-devel-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 48586584 Jun 22 21:27 mysql-community-embedded-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 23314208 Jun 22 21:27 mysql-community-embedded-compat-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 134413980 Jun 22 21:27 mysql-community-embedded-devel-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 3091092 Jun 22 21:27 mysql-community-libs-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 1266220 Jun 22 21:27 mysql-community-libs-compat-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 193030448 Jun 22 21:28 mysql-community-server-5.7.43-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 128921364 Jun 22 21:28 mysql-community-test-5.7.43-1.el7.x86_64.rpm
解释:
这些包是针对 CentOS 7 操作系统的 MySQL 社区版软件包。以下是每个软件包的简要解释:
mysql-community-client: MySQL 客户端,提供与 MySQL 服务器进行交互的工具和客户端库。
mysql-community-common: MySQL 服务器和客户端共享的一些通用文件。
mysql-community-devel: MySQL 开发库,包含用于开发 MySQL 应用程序所需的头文件和开发库文件。
mysql-community-embedded: 嵌入式 MySQL 服务器,可以将 MySQL 作为一个库嵌入到其他应用程序中。
mysql-community-embedded-compat: MySQL 之前版本的共享兼容库,用于与旧版 MySQL 兼容。
mysql-community-embedded-devel: 嵌入式 MySQL 的开发库,用于开发嵌入式 MySQL 应用程序。
mysql-community-libs: MySQL 的共享库,包含实现 MySQL 库的运行时库。
mysql-community-libs-compat: MySQL 之前版本的共享兼容库,用于与旧版 MySQL 兼容。
mysql-community-server: MySQL 服务器,用于托管和管理 MySQL 数据库。
mysql-community-test: MySQL 测试组件,包含用于测试 MySQL 功能和性能的工具和示例。
<3>Installing MySQL
[root@node4 mysql]# rpm -ivh mysql*
warning: mysql-community-client-5.7.43-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
error: Failed dependencies:
mariadb-libs is obsoleted by mysql-community-libs-5.7.43-1.el7.x86_64
mariadb-libs is obsoleted by mysql-community-libs-compat-5.7.43-1.el7.x86_64
perl(JSON) is needed by mysql-community-test-5.7.43-1.el7.x86_64
这里安装时和mariadb冲突了,需要把这些包卸载了
[root@node4 mysql]# yum install -y mysql* #这里为了放便就用yum全安了
(2).在线安装
配置一个yum源
<1> Adding the MySQL Yum Repository
[root@node3 ~]# yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm -y
[root@node3 yum.repos.d]# ll | grep mysql-community
-rw-r--r--. 1 root root 1627 Apr 5 2017 mysql-community.repo
-rw-r--r--. 1 root root 1663 Apr 5 2017 mysql-community-source.repo
[root@node3 yum.repos.d]# yum repolist enabled | grep "mysql.*-community.*" #开启的安装包
mysql-connectors-community/x86_64 MySQL Connectors Community 234
mysql-tools-community/x86_64 MySQL Tools Community 102
mysql57-community/x86_64 MySQL 5.7 Community Server 696
配置的5.7版本的源也有其他版本的,实际用的还是5.7,其他的要启用
<2>Installing MySQL
[root@node3 ~]# yum install mysql-community-server.x86_64
2.docker容器安装--临时或测试
CentOS 7的docker版本太低,这里再阿里镜像里下载
docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)
CentOS 7(使用 yum 进行安装)
1.step 1: 安装必要的一些系统工具
[root@node3 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2. Step 2: 添加软件源信息
[root@node3 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. Step 3
[root@node3 ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
4. Step 4: 更新并安装Docker-CE
[root@node3 ~]# yum makecache fast
[root@node3 ~]# yum -y install docker-ce
5. Step 5: 开启Docker服务
[root@node3 ~]# service docker start
配置镜像加速器
https://lfhqfxbn.mirror.aliyuncs.com
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
[root@node3 ~]# mkdir -p /etc/docker
[root@node3 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://lfhqfxbn.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://lfhqfxbn.mirror.aliyuncs.com"]
}
[root@node3 ~]# systemctl daemon-reload
[root@node3 ~]# systemctl restart docker
安装MySQL
[root@node3 ~]# docker pull mysql:5.7 #拉取mysql5.7的镜像
[root@node3 ~]# docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
3a4c209590f41ae4d061e7c2829face670ceb0a29985c1f2c9bd9278cdf209cf
建了一个名为 mysqltest 的 MySQL 容器,并在容器中运行 MySQL 5.7 版本的镜像。-e 参数用于设置 MySQL root 用户的密码为 123456。
-d 参数表示以后台方式运行容器。命令返回的输出 3a4c209590f41ae4d061e7c2829face670ceb0a29985c1f2c9bd9278cdf209cf 是容器的唯一标识符,也就是容器 ID。
[root@node3 ~]# docker ps #列出当前正在运行的 Docker 容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a4c209590f4 mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp mysqltest
[root@node3 ~]# docker images #列出本地已安装的 Docker 镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 24 months ago 448MB
[root@node3 ~]# docker exec -it mysqltest bash #这个命令将进入名为 mysqltest 的容器的交互式终端。
root@3a4c209590f4:/# mysql -uroot -p123456
mysql>
3.源码安装
参考官方文档
MySQL :: Download MySQL Community Server (Archived Versions)
[root@node3 ~]# yum install -y gcc gcc-c++ ncurses ncurses-devel openssl-devel make cmake #安装相关依赖
[root@node3 ~]# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.43.tar.gz
[root@node3 ~]# tar -xvf mysql-boost-5.7.43.tar.gz -C /usr/local/src/
[root@node3 ~]# mkdir -p /data/mysql
[root@node3 mysql-5.7.43]# mkdir builer #新建目录,存放编译产生的中间文件。因为不允许在源码目录下进行编译
[root@node3 mysql-5.7.43]# cd builer/
[root@node3 builer]# cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost
[root@node3 builer]# make && make install
cmake命令所使用的参数说明:
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安装的根目录
- -DMYSQL_DATADIR=/data/mysql:数据文件所存放的目录
- -DSYSCONFDIR=/etc :MySQL配置文件所在目录
- -DMYSQL_USER=mysql:MySQL服务的用户名
- -DWITH_MYISAM_STORAGE_ENGINE=1:安装MyISAM引擎
- -DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB引擎
- -DWITH_ARCHIVE_STORAGE_ENGINE=1:安装Archive引擎
- -DWITH_MEMORY_STORAGE_ENGINE=1:安装Memory引擎
- -DWITH_FEDERATED_STORAGE_ENGINE=1:安装Federated引擎
- -DWITH_PARTITION_STORAGE_ENGINE=1:安装Partition引擎
- -DWITH_READLINE=1:MySQL的readline library
- -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路径
- -DMYSQL_TCP_PORT=3306 :MySQL的监听端口
- -DENABLED_LOCAL_INFILE=1:启用加载本地数据
- -DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件
- -DEXTRA_CHARSETS=all :使MySQL支持所有的扩展字符
- -DDEFAULT_CHARSET=utf8mb4:设置默认字符集为utf8mb4
-DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认字符校对- -DWITH_DEBUG=0:禁用调试模式
- -DMYSQL_MAINTAINER_MODE=0:是否启用mysql维护器特定的开发环境
- -DDOWNLOAD_BOOST=1:允许在线更新boost库
- -DWITH_BOOST=…/boost:指定boost安装路径
编译安装完成后,创建mysql用户及更改相应目录的属主
[root@node3 mysql-5.7.43]# groupadd mysql
[root@node3 mysql-5.7.43]# useradd -M -g mysql -s /sbin/nologin mysql
[root@node3 builer]# chown -R mysql:mysql /usr/local/mysql/ #将 /usr/local/mysql/ 目录下的所有文件和文件夹的所有者改为 mysql 用户,所属组也改为 mysql 组。
[root@node3 builer]# chown -R mysql:mysql /data/mysql/ #将 /data/mysql/ 目录下的所有文件和文件夹的所有者改为 mysql 用户,所属组也改为 mysql 组。
编辑配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysql.pid
创建日志文件存放的目录和pid文件存放的目录,并赋权给mysql用户
[root@node3 builer]# mkdir -p /var/log/mysqld /var/run/mysqld
[root@node3 builer]# chown -R mysql:mysql /var/log/mysqld
[root@node3 builer]# chown -R mysql:mysql /var/run/mysqld
配置环境变量,方便使用MySQL的命令
[root@node3 builer]# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[root@node3 builer]# source /etc/profile
[root@node3 builer]# mysql --version #查看版本,检验是否安装成功
mysql Ver 14.14 Distrib 5.7.43, for Linux (x86_64) using EditLine wrapper
初始化数据库
[root@node3 builer]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql
初始化成功后会生成root账户的默认密码。
将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码。
将MySQL生成的启动文件复制到/usr/lib/systemd/system/目录下
[root@node3 builer]# cp /usr/local/src/mysql-5.7.43/builer/scripts/mysqld.service /usr/lib/systemd/system/
[root@node3 builer]# chown 775 /usr/lib/systemd/system/mysqld.service
4.密码恢复
[root@node3 builer]# vim /etc/my.cnf
skip-grant-tables
加上这一行(跳过授权表) 最后修改完了之后再删掉
[root@node3 builer]# systemctl start mysqld.service
[root@node3 builer]# mysql -uroot -p #可以无密码登录
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456K=x=y'; #修改密码
5.安装完成后的部署
不管怎么安装的最后都要启动
[root@node4 mysql]# systemctl start mysqld.service #启动
[root@node4 mysql]# systemctl enable mysqld.service --now #开机自启
查看默认密码
node4为例子其他都一样无论怎么安装的。 注意:docker和源码安装可以设置简单密码
[root@node4 mysql]# awk '/temporary password/ {print $NF}' /var/log/mysqld.log
<rQlL*V?T5yO
[root@node4 mysql]# mysql -uroot -p'<rQlL*V?T5yO' #使用默认密码登录
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. #这里必须修改密码才可以使用mysql
mysql> alter user root@localhost identified by '123456'; #密码要符合复杂性要求
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user root@localhost identified by '123456K=x=y'; #有数字大小写和符号
Query OK, 0 rows affected (0.00 sec)
平时练习可以更改密码策略,
mysql> show variables like 'validate_password%'; #查看密码策略
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)
当前密码长度为8,如果不介意的话就不用修改了,按照最低要求的来讲,设置为 4 位的密码,设置 validate_password_length 的全局参数为 4 即可
mysql> set global validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
mysql> alter user root@localhost identified by 'mysql'; #再次修改密码
Query OK, 0 rows affected (0.00 sec)
mysql> \q #退出,或者是exit
Bye
[root@node4 mysql]# mysql -uroot -pmysql #登录即可
6.求助
再二进制安装时,没有my-default.cnf服务器的模板配置文件
只做到了这些
MySQL :: Download MySQL Community Server
1、下载glibc版本的Mysql
mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
这里下载出了问题所以就用SFTP传过来了
2、新建用户以安全方式运行进程
[root@node3 ~]# groupadd -r mysql
[root@node3 ~]# useradd mysql -r -g mysql -c "MYSQL Server" -s /bin/false
3、安装并初始化mysql
[root@node3 ~]# tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar -C /usr/local/
[root@node3 ~]# tar xf /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@node3 ~]# ll /usr/local/mysql*
-rw-r--r--. 1 7161 31415 694785800 Oct 11 20:11 /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
-rw-r--r--. 1 7161 31415 35456236 Oct 11 20:09 /usr/local/mysql-test-5.7.44-linux-glibc2.12-x86_64.tar.gz
[root@node3 local]# ln -sv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql #创建软连接,方便以后升级
‘mysql’ -> ‘mysql-5.7.44-linux-glibc2.12-x86_64/’
[root@node3 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
2023-12-16T16:29:35.621700Z 1 [Note] A temporary password is generated for root@localhost: lm2fSl=GZ.sG #初始化会生成临时密码
就是这里没有
my-default.cnf,不知道什么原因,求助