MySql 数据库部署方式
下载
选择MYSQL官网的 DOWNLOADS
进行数据库软件程序下载选择;
在数据库官方下载页面中,选择 MySQL Community (GPL) Downloads
链接,进行数据库程序社区版下载;
进入数据库程序的社区版下载页面后,会看到社区版数据库服务的多种安装场景,选择MySQL Community Server
方式
官方最新版下载
官方历史版下载
进入到社区版服务器安装场景界面,需要选择数据库服务的安装部署环境和需要下载的程序具体版本信息;
查看Linux系统的glibc运行使用的C语言库版本信息:
getconf GNU_LIBC_VERSION
# 或
ldd --version
安装方式
在Linux系统中常见的部署安装方式:
安装方式 | 特征说明 |
---|---|
二进制 | 直接解压缩二进制程序包,进行简单的配置和初始化操作即可 |
rpm包 | 需要从官方网站下载rpm程序包,并且需要考虑系统环境的兼容性,解决软件程序包依赖 |
yum包 | 需要根据官方网站说明,配置yum下载的仓库源信息,在联网情况下进行安装部署 |
源码包 | 需要从官方网站下载源码程序包,并且需要解决程序包依赖问题,以及需要采用编译安装 |
1)部署安装MySQL数据库服务程序(二进制)
- 确认操作系统数据库服务安装环境
# 查看操作系统的版本信息
cat /etc/redhat-release
# 查看操作系统的网卡地址
ip address show eth0
# 查看系统本地域名解析信息
cat /etc/hosts
# 查看防火墙服务是否关闭
systemctl is-active firewalld
systemctl is-enabled firewalld
systemctl status firewalld
# 查看selinux安全策略是否关闭
getenforce
vim /etc/selinux/config
# 如果未关闭
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
# 清除系统自带的mariadb数据库服务相关的程序包
rpm -qa|grep mariadb
# mariadb-libs-5.5.68-1.el7.x86_64
yum remove -y mariadb-libs
# 安装数据库服务程序所需的依赖软件包
yum install -y libaio-devel
# 需要修改链接库信息(只有centos 8 系统才需要进行操作修改)
ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
# 或者
yum install ncurses-compat-libs
- 数据库服务程序详细安装过程
# 上传数据库程序软件包
cd /usr/local/
# 解压数据库服务软件程序压缩包
tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
# 创建数据库服务程序目录的软链接
ln -s mysql-8.0.26-linux-glibc2.12-x86_64 mysql
# 配置数据库服务程序环境变量
vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile
# 可以获取数据库服务版本信息表示环境变量配置生效
mysql -V
# mysql Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
# 创建数据库服务管理用户信息
useradd mysql
# 创建数据库服务相关目录并进行目录信息进行授权
mkdir -p /data/3306/data /data/3306/logs
chown -R mysql. /data/
2)进行初始MySQL数据库服务操作:(8.0)
数据库初始化命令解释如下:
核心程序命令 | 初始化核心参数 | 数据管理用户 | 数据存储路径 | 数据存放目录 |
---|---|---|---|---|
mysqld | --initialize-insecure | --user=mysql | --basedir=/usr/local/mysql | --datadir=/data/3306/data |
初始化过程如下:
# 数据库服务初始化操作过程
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
# 数据库初始化过程,就是将数据库默认的系统数据信息创建出来,以及根据配置文件激活数据库的特定功能
2022-10-11T16:33:20.057586Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.26-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.26) initializing of server in progress as process 33820
2022-10-11T16:33:20.099560Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-11T16:33:20.490688Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-11T16:33:21.202672Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2022-10-11T16:33:21.203068Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2022-10-11T16:33:21.292047Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
数据库服务初始化经典报错信息
[报错信息]:mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
[解决方法]:yum install -y libaio-devel
[报错信息]:initialize specified but the data directory has files in it. Aborting.The designated data directory /data/3306/data/ is unusable. You can remove all files that the server added to it.
[解决方法]:rm -rf /data/3306/data/*
3)编写生成MySQL数据库配置文件:
# 创建数据库服务运行需要加载的my.cnf配置模板文件
cat > /etc/my.cnf <<eof
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
eof
4)启动运行MySQL数据库服务脚本
# 查看数据库服务默认启动脚本文件
ls -l /usr/local/mysql/support-files/mysql.server
-rwxr-xr-x 1 7161 31415 10576 7月 1 2021 /usr/local/mysql/support-files/mysql.server
# 设置数据库服务程序启动运行文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 启动数据库服务程序利用脚本文件
/etc/init.d/mysqld start
service mysqld start
service mysqld stop
# 设置数据库服务开机自动运行
chkconfig --add mysqld
# 启动数据库服务程序利用脚本文件 (systemd方式)
systemctl enable mysqld
mysqld.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld on
# 将service管理服务方式转换为systemd管理服务方式
systemctl start mysqld
systemctl is-active mysqld
# 检查确认数据库服务是否启动成功
netstat -lntup|grep 3306
tcp6 0 0 :::33060 :::* LISTEN 67809/mysqld
tcp6 0 0 :::3306 :::* LISTEN 67809/mysqld
ps -ef|grep mysql
root 67663 1 0 01:04 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/master.edu.pid
mysql 67809 67663 0 01:04 pts/0 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=master.edu.err --pid-file=/data/3306/data/master.edu.pid --socket=/tmp/mysql.sock
在启动mysql数据库服务时,可能看到33060端口信息,此端口信息主要实现mysqlx协议的通讯过程;利用mysqlx协议可以实现利用mysql-shell功能组件,对数据进行key-value操作,即识别json文件信息,进行远程管理;
Port 3306 is the default port for the MySQL Protocol, which is used by the mysql client, MySQL Connectors, and utilities such as mysqldump and mysqlpump.
Port 33060 is the default port for the MySQL Database Extended Interface (the MySQL X Protocol).
The X Plugin can be disabled at startup by either setting mysqlx=0 in your MySQL configuration file, or by passing in either --mysqlx=0 or --skip-mysqlx when starting the MySQL server.
Alternatively, use the -DWITH_MYSQLX=OFF CMake option to compile MySQL Server without X Plugin. 参考链接:https://blog.csdn.net/michaelwoshi/article/details/107955539
5)登录管理MySQL数据库服务程序
使用--initialize-insecure
进行初始化时,数据库可以直接免密登录。不同数据库服务版本安装初始化差异如下:
版本信息 | 命令信息 | 初始化操作参数 | 备注说明 |
---|---|---|---|
5.6 | mysql_install_db | 初始化的命令不一致,参数相同(无管理员密码) | |
5.7 8.0 | mysqld | --initialize-insecure | 表示不安全方式初始化(无管理员密码) |
--initialize | 表示安全方式初始化(有随机默认管理员密码) |
安全方式初始化特性:会生成临时密码(12位密码 需要满足4种复杂度),必须在首次登录数据库时改掉,才能正常管理数据库
使用安全模式初始化数据库后,需要利用临时密码登录数据库服务,并设置管理员用户密码信息
mysql > alter user root@'localhost' identified by '123456';
# 如果不修改设置管理员用户密码,使用临时密码只是能登录数据库,但是无法管理数据库
启停服务
在企业实际环境中,数据库服务的运行状态一般是不会进行随意调整的,在特殊场景下需要提前审批后,才能进行调整;在进行数据库服务关闭前,可以将业务先切换到备库(从库),再停止原有主库服务
数据服务运行启动的进程信息查看:
ps -ef|grep mysqld
root 6352 1 0 00:01 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/master.edu.pid
# 利用mysqld_safe脚本信息,可以满足定制修改的需求,设置一些灵活的变量信息,支持一些高级的启动功能
mysql 6505 6352 17 00:01 pts/1 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=master.edu.err --pid-file=/data/3306/data/master.edu.pid --socket=/tmp/mysql.sock
# 利用mysqld命令可以启动数据库服务,并显示启动的命令进程信息,但不能负责完成数据库服务的停止和重启操作
# 利用mysqld命令可以启动数据库服务,有些服务功能是锁定死的,不能编辑改动(比如日志功能)
# 利用mysqld_safe命令启动数据库服务,可以进行特殊功能信息配置,并且可以实现数据库维护性操作,还可以设置启停重启;
数据库服务运行启动与关闭操作逻辑:(ps -ef|grep mysqld --> bin/mysqld)
数据库服务除了应用脚本文件或命令进行关闭数据库服务之外,还可以进入到数据库服务中进行关闭服务:
mysql> shutdown;
# 或
mysqladmin -uroot -p123456 shutdown
# mysqladmin 用于执行各种数据库管理和维护任务。允许用户通过简单的命令行接口与 MySQL 服务器进行交互,执行诸如检查服务器状态、创建和删除数据库、管理用户权限等操作
当利用脚本或命令无法正常关闭服务时,也可以使用以上操作方式关闭数据库服务,不建议利用kill -9方式杀进程停数据库
数据库启停方式总结:
序号 | 启动方式 | 关闭方式 |
---|---|---|
01 | mysqld & | kill/pkill/killall (不建议) kill -9 禁用 |
02 | mysqld_safe & | kill/pkill/killall (不建议) |
03 | mysql.server start | mysql.server stop |
04 | service mysqld start (建议) | service mysqld stop (建议) |
05 | systemctl start mysqld | systemctl stop mysqld |
06 | mysql> shutdown | |
07 | mysqladmin -uroot -pmaster123 shutdown |
systemctl配置项启动
[Unit]
Description=MySOL Server 5.6
Documentation=man:mysqld(8)
Documentation=http://dev.mysgl.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql-5.6/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
密码设置
- 查看 MySQL 初始密码策略
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 |
+--------------------------------------+--------+
# validate_password_policy: MEDIUM 数字、小写字母、大写字母和特殊字符中的至少三类
- 设置与修改密码
# 利用数据库服务命令修改密码信息,将原有master123密码 改为master
mysqladmin -uroot -pmaster123 password 'master'
# 利用数据库服务SQL语句修改密码信息
# 适合于mysql 8.0
mysql> alter user root@'localhost' identified by 'master123';
mysql> flush privileges;
# 适合于mysql 5.7
mysql> update mysql.user set authentication_string=PASSWORD('master123') where user='root' and host='localhost';
mysql> flush privileges;
# 适合于mysql 5.6
mysql> set password for 'master'@'localhost'=PASSWORD('master123');
mysql> flush privileges;
- 重置密码(root密码丢失)
# 1) 关闭数据库服务
systemctl stop mysqld
# 2) 采用跳过授权表登陆数据库
mysql_safe --skip-grant-tables --skip-networking &
# --skip-grant-tables 表示忽略授权表启动
# --skip-networking 忽略网络通讯方式启动
# 3) 进入数据库修改重置密码
# 可以实现将内存信息同步到磁盘,实现磁盘数据加载到内存
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123456';
# 4) 退出数据库并关闭服务
mysql> shutdown;
systemctl start mysql
# 5) 测试密码信息
mysql -uroot -p123456