2.1 版本及下载版本介绍:Alpha版:开发版,公司内部使用Beta版:完成开发后,用户体验版RC版:生产环境发布之前的一个小版本或称候选版GA版:正式发布版本MySQL官网地址: http://www.mysql.com/从官方网站下载安装包从官方网站下载源代码包从官方网站下载二进制包从发行版本光盘中获取安装包MySQL 常见版本:MySQL Community Server社区版本,开源免费,但不提供官方技术支持。MySQL Enterprise Edition企业版本,需注册付费,可以试用 30 天。MySQL Cluster集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。MySQL Cluster CGE高级集群版,需付费官方文档: https://dev.mysql.com/doc/refman/8.0/en/introduction.htmlMySQL数据库存在多种版本,不同的版本在不同的平台上:https://dev.mysql.com/downloads/mysql/也可以选择MySQL对应版本的,找到安装教程,如MySQL8.0为例: https://dev.mysql.com/doc/r efman/8.0/en/installing.html2.2 生产环境中使用通用二进制包安装2.2.1 作用二进制包:源码包经过成功编译之后产生的包优点:由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快注意:在生产环境中通用二进制包安装方法较为常用2.2.2 软件包下载根据上图系统参数里的glibc版本和cpu架构选择Compressed TAR Archive:生产环境首选包(最小完整版)格式: .tar.xz 高压缩,体积小、传输快内容:仅运行 MySQL 必需文件(mysqld、客户端工具、库、配置模板、文档)剔除:调试程序、源码、完整测试套件、多余开发文件适用:自建服务器、容器、生产业务、运维标准二进制部署Compressed TAR Archive, Test Suite:仅测试人员使用,生产完全不用下载内容:MySQL 官方自动化压力 / 功能测试用例、测试脚本、单元测试工具 不含完整数据库服 务端程序,单独下载无法启动 MySQL 服务适用:内核开发、DBA 做全量兼容性压测,普通业务部署直接忽略TAR:无压缩原始大包,不推荐格式:.tar 无压缩,体积巨大,下载耗时、占用磁盘多内容:和第一个 xz 包内容完全一致,只是没有高压缩,包含完整 stripped 运行程序缺点:传输慢、备份占用空间大,无任何额外功能增益适用:内网离线环境无法解压 xz 格式的极端场景2.2.3 安装2.2.3.1 解压将软件包上传到根当前用户家目录解压缩[root@server ~]# tar -xvf mysql-8.0.37-linux-glibc2.17-x86_64.tar.xz -C /usr/local使用前的准备# 移动到默认安装目录,也可自行修改 [root@server ~]# cd /usr/local [root@server local]# ls bin etc games include lib lib64 libexec mysql-8.0.45-linux-glibc2.28 x86_64 sbin share src [root@server local]# mv mysql-8.0.45-linux-glibc2.28-x86_64 mysql [root@server local]# ls bin etc games include lib lib64 libexec mysql sbin share src [root@server local]# cd mysql [root@server mysql]# useradd -r -s /sbin/nologin mysql # 创建名为 mysql 的系统用 户,系统会自动创建与用户同名的 mysql 组,并设置其登录 shell 为 /sbin/nologin,以限制该用户的 登录权限 [root@server mysql]# mkdir data # 创建用于存放 MySQL 数据文件目录 # 设置 mysql 目录的账户及工作组,生产环境中不要使用 root [root@server mysql]# chown -R mysql:mysql /usr/local/mysql2.2.3.2 初始化软件[root@server mysql]# cd /usr/local/mysql/bin [root@server bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # 注意:执行成功后需要复制密码 # --basedir:基础目录(程序安装目录) # --datadir:数据目录 [root@server bin]# ./mysqld_safe --user=mysql # 以 mysql 用户身份启动 MySQL 服务 器,mysqld_safe 是一个用于启动和监控 MySQL 服务器的脚本 # 注意:此时上述命令执行完毕处于后台运行状态,需要另行启动一个终端 [root@server ~]# ps -ef | grep mysql # 查看进程运行状态 [root@server ~]# cd /usr/local/mysql/bin [root@server bin]# ./mysql -uroot -p Enter password: # 粘贴之前的初始密码 mysql> alter user 'root'@'localhost' identified by '123456'; #修改密码 mysql> flush privileges; # 刷新 mysql>exit # 再次测试是否可用新密码登录 [root@server bin]# ./mysql -uroot -p Enter password: # 新设置的密码 mysql>exit [root@server ~]# ps -ef | grep mysql [root@server ~]# kill pid号 # 在当前终端关闭运行的mysql2.2.3.3 配置文件# 回到之前的终端,敲一个回车,显示进程已杀死,获取到终端提示符 [root@server bin]# vim /etc/my.cnf # 新建配置文件,输入以下内容: [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 basedir = /usr/local/mysql datadir = /usr/local/mysql/data tmpdir = /tmp socket = /tmp/mysql.sock character-set-server = utf8mb4 collation-server = utf8mb4_general_ci default-storage-engine=INNODB log_error = error.log # 修改密码 # 注意:以下是上述配置文件的解释 ###############################客户端设置##################################### # [client]:客户端设置 # port:默认端口号 # socket:启动套接字 ###############################服务端设置##################################### # [mysqld] # port:端口号 3306 # basedir:mysql安装根目录 # datadir:mysql数据文件所在位置 没有改目录则创建 # tmpdir:临时目录 比如load data infile会用到 # socket:设置socke文件所在目录 # character-set-server:utf8mb4数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符 占用4个字节) # collation-server:数据库字符集对应一些排序等规则,注意要和character-set-server对应 # default-storage-engine:数据库引擎 ###############################日志设置##################################### # log_error = error.log:数据库错误日志文件2.2.3.4 配置启动脚本[root@server mysql]# vim /usr/lib/systemd/system/mysqld.service [Unit] Description=MySQL Server After=network.target remote-fs.target nss-lookup.target [Service] Type=notify User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE=65535 LimitNPROC=65535 Restart=on-failure RestartPreventExitStatus=1 TimeoutSec=0 [Install] WantedBy=multi-user.target # 注意:以下是上述配置文件的解释 ###############################服务描述##################################### # [Unit]:服务的描述、启动依赖板块 # Description:服务的描述 # After:定义启动顺序,等后面这几个目标全部启动完成之后,才启动 MySQL ###############################服务设置##################################### # [Service]:服务核心区块 # Type:类型 # User:用户 # Group:用户组 # ExecStart:服务启动执行的程序,指定主程序,指定程序读取的配置文件 # LimitNOFILE:最大句柄数(进程同一时间能打开的文件 + 网络连接的总数上限) # LimitNPROC:创建的最大进程数 # Restart=on-failure:只有进程异常失败退出(非0退出码)的时候,systemd自动重启MySQL # RestartPreventExitStatus=1:如果程序退出码是1,就算 on-failure,也不自动重启 # TimeoutSec=0:服务启动超时时间。0 代表不设置超时,无限等待 ###############################启动设置##################################### # [Install] # WantedBy=multi-user.target:Linux 多用户字符模式(没有图形桌面,黑窗口命令行模式,服务器 默认都是这个模式) [root@master mysql]# systemctl daemon-reload # 配置完成即可用 systemctl 管理 mysql [root@master mysql]# systemctl enable --now mysqld.service [root@master mysql]# systemctl status mysqld.service [root@master mysql]# ps -ef | grep mysql # 查看是否启动2.2.3.5 设置 mysql 命令[root@server mysql]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [root@server mysql]# vim /etc/profile # 在该文件第二行添加下述内容 export PATH=$PATH:/usr/local/mysql/bin [root@server mysql]# source /etc/profile [root@server mysql]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr /local/mysql/bin2.2.3.6 测试[root@server ~]# mysql -uroot -p Enter password: mysql> exit2.3 yum仓库安装2.3.1 官方yum仓库添加 yum 源(RHEL)访问官方:https://www.mysql.com/查看官方教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html选择downloads页面的:MySQL Community (GPL) Downloads »添加 yum 源[root@server ~]# wget https://dev.mysql.com/get/mysql84-community-release-el10 3.noarch.rpm [root@server ~]# rpm -ivh mysql84-community-release-el10-3.noarch.rpm [root@server ~]# dnf list | grep mysql安装 mysql-community-server[root@server ~]# yum install mysql-community-server.x86_64 -y [root@server ~]# systemctl start mysqld # 启动,注意有d [root@server ~]# systemctl status mysqld [root@server ~]# cat /var/log/mysqld.log # 如果文件太长,可过滤 'temporary password' 此字段 2023-07-09T02:38:36.368700Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qQ6OmpD?8_.f # 查看初始登录密码 [root@server ~]# mysql -u root -p Enter password: # 赋值初始登录密码 mysql> flush privileges; mysql> exit # 以root身份登录 mysql> alter user 'root'@'localhost' identified by '密码'; [root@server ~]# dnf remove mysql-community-server.x86_64 -y [root@server ~]# rpm -qa | grep mysql [root@server ~]# rm -rf /var/lib/mysql/ /var/log/mysqld.log2.3.2 本地yum仓库# 安装 mysql [root@server ~]# dnf install mysql-server -y [root@server ~]# systemctl start mysqld.service # 查看日志,发现mysql是空密码 [root@server ~]# cat /var/log/mysql/mysqld.log [root@server ~]# mysql -uroot -p # 空密码登录 Enter password: mysql> alter user 'root'@'localhost' identified by '123456'; mysql> flush privileges; mysql> exit # 删除 mysql [root@server ~]# dnf remove mysql-server -y [root@server ~]# rm -rf /var/log/mysql /var/log/mysqld.log.00.json宝子们剩下的下次更完,有需要急用的可以私聊问我,免费的,嘻嘻,记得关注点赞呦
2.1 版本及下载版本介绍:Alpha版:开发版,公司内部使用Beta版:完成开发后,用户体验版RC版:生产环境发布之前的一个小版本或称候选版GA版:正式发布版本MySQL官网地址: http://www.mysql.com/从官方网站下载安装包从官方网站下载源代码包从官方网站下载二进制包从发行版本光盘中获取安装包MySQL 常见版本:MySQL Community Server社区版本,开源免费,但不提供官方技术支持。MySQL Enterprise Edition企业版本,需注册付费,可以试用 30 天。MySQL Cluster集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。MySQL Cluster CGE高级集群版,需付费官方文档: https://dev.mysql.com/doc/refman/8.0/en/introduction.htmlMySQL数据库存在多种版本,不同的版本在不同的平台上:https://dev.mysql.com/downloads/mysql/也可以选择MySQL对应版本的,找到安装教程,如MySQL8.0为例: https://dev.mysql.com/doc/r efman/8.0/en/installing.html2.2 生产环境中使用通用二进制包安装2.2.1 作用二进制包:源码包经过成功编译之后产生的包优点:由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快注意:在生产环境中通用二进制包安装方法较为常用2.2.2 软件包下载根据上图系统参数里的glibc版本和cpu架构选择Compressed TAR Archive:生产环境首选包(最小完整版)格式: .tar.xz 高压缩,体积小、传输快内容:仅运行 MySQL 必需文件(mysqld、客户端工具、库、配置模板、文档)剔除:调试程序、源码、完整测试套件、多余开发文件适用:自建服务器、容器、生产业务、运维标准二进制部署Compressed TAR Archive, Test Suite:仅测试人员使用,生产完全不用下载内容:MySQL 官方自动化压力 / 功能测试用例、测试脚本、单元测试工具 不含完整数据库服 务端程序,单独下载无法启动 MySQL 服务适用:内核开发、DBA 做全量兼容性压测,普通业务部署直接忽略TAR:无压缩原始大包,不推荐格式:.tar 无压缩,体积巨大,下载耗时、占用磁盘多内容:和第一个 xz 包内容完全一致,只是没有高压缩,包含完整 stripped 运行程序缺点:传输慢、备份占用空间大,无任何额外功能增益适用:内网离线环境无法解压 xz 格式的极端场景2.2.3 安装2.2.3.1 解压将软件包上传到根当前用户家目录解压缩[root@server ~]# tar -xvf mysql-8.0.37-linux-glibc2.17-x86_64.tar.xz -C /usr/local使用前的准备# 移动到默认安装目录,也可自行修改 [root@server ~]# cd /usr/local [root@server local]# ls bin etc games include lib lib64 libexec mysql-8.0.45-linux-glibc2.28 x86_64 sbin share src [root@server local]# mv mysql-8.0.45-linux-glibc2.28-x86_64 mysql [root@server local]# ls bin etc games include lib lib64 libexec mysql sbin share src [root@server local]# cd mysql [root@server mysql]# useradd -r -s /sbin/nologin mysql # 创建名为 mysql 的系统用 户,系统会自动创建与用户同名的 mysql 组,并设置其登录 shell 为 /sbin/nologin,以限制该用户的 登录权限 [root@server mysql]# mkdir data # 创建用于存放 MySQL 数据文件目录 # 设置 mysql 目录的账户及工作组,生产环境中不要使用 root [root@server mysql]# chown -R mysql:mysql /usr/local/mysql2.2.3.2 初始化软件[root@server mysql]# cd /usr/local/mysql/bin [root@server bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # 注意:执行成功后需要复制密码 # --basedir:基础目录(程序安装目录) # --datadir:数据目录 [root@server bin]# ./mysqld_safe --user=mysql # 以 mysql 用户身份启动 MySQL 服务 器,mysqld_safe 是一个用于启动和监控 MySQL 服务器的脚本 # 注意:此时上述命令执行完毕处于后台运行状态,需要另行启动一个终端 [root@server ~]# ps -ef | grep mysql # 查看进程运行状态 [root@server ~]# cd /usr/local/mysql/bin [root@server bin]# ./mysql -uroot -p Enter password: # 粘贴之前的初始密码 mysql> alter user 'root'@'localhost' identified by '123456'; #修改密码 mysql> flush privileges; # 刷新 mysql>exit # 再次测试是否可用新密码登录 [root@server bin]# ./mysql -uroot -p Enter password: # 新设置的密码 mysql>exit [root@server ~]# ps -ef | grep mysql [root@server ~]# kill pid号 # 在当前终端关闭运行的mysql2.2.3.3 配置文件# 回到之前的终端,敲一个回车,显示进程已杀死,获取到终端提示符 [root@server bin]# vim /etc/my.cnf # 新建配置文件,输入以下内容: [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 basedir = /usr/local/mysql datadir = /usr/local/mysql/data tmpdir = /tmp socket = /tmp/mysql.sock character-set-server = utf8mb4 collation-server = utf8mb4_general_ci default-storage-engine=INNODB log_error = error.log # 修改密码 # 注意:以下是上述配置文件的解释 ###############################客户端设置##################################### # [client]:客户端设置 # port:默认端口号 # socket:启动套接字 ###############################服务端设置##################################### # [mysqld] # port:端口号 3306 # basedir:mysql安装根目录 # datadir:mysql数据文件所在位置 没有改目录则创建 # tmpdir:临时目录 比如load data infile会用到 # socket:设置socke文件所在目录 # character-set-server:utf8mb4数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符 占用4个字节) # collation-server:数据库字符集对应一些排序等规则,注意要和character-set-server对应 # default-storage-engine:数据库引擎 ###############################日志设置##################################### # log_error = error.log:数据库错误日志文件2.2.3.4 配置启动脚本[root@server mysql]# vim /usr/lib/systemd/system/mysqld.service [Unit] Description=MySQL Server After=network.target remote-fs.target nss-lookup.target [Service] Type=notify User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE=65535 LimitNPROC=65535 Restart=on-failure RestartPreventExitStatus=1 TimeoutSec=0 [Install] WantedBy=multi-user.target # 注意:以下是上述配置文件的解释 ###############################服务描述##################################### # [Unit]:服务的描述、启动依赖板块 # Description:服务的描述 # After:定义启动顺序,等后面这几个目标全部启动完成之后,才启动 MySQL ###############################服务设置##################################### # [Service]:服务核心区块 # Type:类型 # User:用户 # Group:用户组 # ExecStart:服务启动执行的程序,指定主程序,指定程序读取的配置文件 # LimitNOFILE:最大句柄数(进程同一时间能打开的文件 + 网络连接的总数上限) # LimitNPROC:创建的最大进程数 # Restart=on-failure:只有进程异常失败退出(非0退出码)的时候,systemd自动重启MySQL # RestartPreventExitStatus=1:如果程序退出码是1,就算 on-failure,也不自动重启 # TimeoutSec=0:服务启动超时时间。0 代表不设置超时,无限等待 ###############################启动设置##################################### # [Install] # WantedBy=multi-user.target:Linux 多用户字符模式(没有图形桌面,黑窗口命令行模式,服务器 默认都是这个模式) [root@master mysql]# systemctl daemon-reload # 配置完成即可用 systemctl 管理 mysql [root@master mysql]# systemctl enable --now mysqld.service [root@master mysql]# systemctl status mysqld.service [root@master mysql]# ps -ef | grep mysql # 查看是否启动2.2.3.5 设置 mysql 命令[root@server mysql]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [root@server mysql]# vim /etc/profile # 在该文件第二行添加下述内容 export PATH=$PATH:/usr/local/mysql/bin [root@server mysql]# source /etc/profile [root@server mysql]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr /local/mysql/bin2.2.3.6 测试[root@server ~]# mysql -uroot -p Enter password: mysql> exit2.3 yum仓库安装2.3.1 官方yum仓库添加 yum 源(RHEL)访问官方:https://www.mysql.com/查看官方教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html选择downloads页面的:MySQL Community (GPL) Downloads »添加 yum 源[root@server ~]# wget https://dev.mysql.com/get/mysql84-community-release-el10 3.noarch.rpm [root@server ~]# rpm -ivh mysql84-community-release-el10-3.noarch.rpm [root@server ~]# dnf list | grep mysql安装 mysql-community-server[root@server ~]# yum install mysql-community-server.x86_64 -y [root@server ~]# systemctl start mysqld # 启动,注意有d [root@server ~]# systemctl status mysqld [root@server ~]# cat /var/log/mysqld.log # 如果文件太长,可过滤 'temporary password' 此字段 2023-07-09T02:38:36.368700Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qQ6OmpD?8_.f # 查看初始登录密码 [root@server ~]# mysql -u root -p Enter password: # 赋值初始登录密码 mysql> flush privileges; mysql> exit # 以root身份登录 mysql> alter user 'root'@'localhost' identified by '密码'; [root@server ~]# dnf remove mysql-community-server.x86_64 -y [root@server ~]# rpm -qa | grep mysql [root@server ~]# rm -rf /var/lib/mysql/ /var/log/mysqld.log2.3.2 本地yum仓库# 安装 mysql [root@server ~]# dnf install mysql-server -y [root@server ~]# systemctl start mysqld.service # 查看日志,发现mysql是空密码 [root@server ~]# cat /var/log/mysql/mysqld.log [root@server ~]# mysql -uroot -p # 空密码登录 Enter password: mysql> alter user 'root'@'localhost' identified by '123456'; mysql> flush privileges; mysql> exit # 删除 mysql [root@server ~]# dnf remove mysql-server -y [root@server ~]# rm -rf /var/log/mysql /var/log/mysqld.log.00.json宝子们剩下的下次更完,有需要急用的可以私聊问我,免费的,嘻嘻,记得关注点赞呦