MySQL 运维实战系列(一)二进制安装 Mysql 8.0
01 数据库服务概述
什么是数据库服务?
数据库是规范存储数据的服务程序,用于存储网站或App界面看不到的数据,支持快速、高效的数据调取。
数据库服务分类
| 类型 | 特点 | 代表产品 |
|---|---|---|
| 关系型数据库 | 数据存储类似Excel表格(库=文件,表=表格,字段/记录=行列) | MySQL, MariaDB, Oracle, PostgreSQL |
| 非关系型数据库 | 无表格结构限制 | Redis(缓存型), MongoDB(文档型) |
| 新型数据库 | 结合关系型与非关系型特点,支持分布式存储 | OB, TiDB(兼容MySQL), 达梦, openGauss(兼容Oracle) |
02 数据库服务安装部署(以MySQL为例)
安装方式对比
| 方式 | 优点 | 缺点 |
|---|---|---|
| yum | 简单 | 无法定制版本 |
| rpm | 可控 | 需要解决依赖 |
| 源码编译 | 灵活 | 慢、耗资源 |
| 二进制(推荐) | 解压即用 | 需手动配置 |
二进制安装步骤(MySQL 8.0.36)
1. 操作系统环境准备
# 我用的centos7.9# 关闭防火墙和SELinuxsystemctl stop firewalld&&systemctl disable firewalld setenforce0# 关闭selinux setenforce: SELinux is disabled# 创建管理用户和目录useraddmysql-M-s/sbin/nologinmkdir-p/data/3306/datamkdir-p/data/3306/logschown-Rmysql.mysql /data/3306/data /data/3306/logscd/usr/local/# 安装数据库需要的依赖yuminstall-ylibaio-devel1.1下载数据库安装包
MySQL 官方下载页面
2. 安装程序
# 下载好的安装包上传到 /usr/localcd/usr/localtarxf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xzln-smysql-8.0.36-linux-glibc2.12-x86_64 mysql# 配置环境变量echo'export PATH="$PATH:/usr/local/mysql/bin"'>>/etc/profilesource/etc/profile# 验证版本mysql-V若系统中已有MariaDB/MySQL,需先卸载:
rpm-qa|grep-E"mariadb|mysql"|xargsrpm-e--nodeps# --nodeps忽略依赖检查mysql/bin 目录下的工具
| 分类 | 命令 | 作用 | 使用场景 |
|---|---|---|---|
| 服务器启动与管理 | mysqld | MySQL 服务器主程序 | 直接启动数据库服务 |
| mysqld_safe | 安全的启动脚本,进程异常自动重启 | 生产环境推荐使用 | |
| mysqladmin | 管理工具(查看状态、关闭服务等) | 快速管理操作 | |
| 客户端连接工具 | mysql | MySQL 命令行客户端 | 连接数据库执行 SQL 命令 |
| mysqlshow | 显示数据库、表、列信息 | 查看数据库结构 | |
| 备份与恢复 | mysqldump | 逻辑备份工具(导出 SQL 文件) | 最常用的备份工具 |
| mysqlbinlog | 解析二进制日志 | 增量备份、数据恢复 | |
| 数据库检查与修复 | mysqlcheck | 检查、修复、优化表 | 维护数据库表 |
| myisamchk | MyISAM 表检查和修复 | 修复 MyISAM 引擎表 | |
| innochecksum | 检查 InnoDB 表空间完整性 | 检测 InnoDB 文件损坏 | |
| 安全与配置 | mysql_secure_installation | 安全配置向导 | 首次安装后加固安全 |
| mysql_config_editor | 加密保存登录凭据 | 避免密码明文 | |
| 性能测试 | mysqlslap | 数据库压力测试工具 | 测试并发性能 |
| 错误诊断 | perror | 查看错误码含义 | 查看错误说明 |
| 升级工具 | mysql_upgrade | 升级数据库系统表 | MySQL 版本升级后运行 |
3. 初始化设置
# 配置文件 /etc/my.cnfcat>/etc/my.cnf<<'EOF' [mysqld] # 基础路径配置 basedir = /usr/local/mysql datadir = /data/3306/data socket = /tmp/mysql.sock pid-file = /data/3306/data/mysqld.pid port = 3306 user = mysql # 错误日志(必须) log-error = /data/3306/logs/mysqld.log # 字符集 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [client] socket = /tmp/mysql.sock port = 3306 default-character-set = utf8mb4 [mysql] socket = /tmp/mysql.sock port = 3306 default-character-set = utf8mb4 prompt = '\\u@\\h [\\d]> ' EOF# 初始化(免密方式,推荐)mysqld --defaults-file=/etc/my.cnf --initialize-insecure4. 启动数据库(三种方法,推荐3)
# 1.命令方式mysqld_safe --defaults-file=/etc/my.cnf&# 2.脚本方式,mysql自带的脚本cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld /etc/init.d/mysqld startservicemysqld start# 3.设置系统服务(推荐)cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld systemctlenablemysqld# 先执行这个初始化systemctl start mysqld安装补充说明
- 依赖问题:
- Kylin系统:无需额外安装
- CentOS 7.9:需安装
libaio-devel
- 初始化密码:
--initialize生成临时密码(记录在错误日志中)--initialize-insecure免密初始化(推荐练习)
- 启动失败排查:
- 查看错误日志:
cat /data/3306/data/*.err - 检查
/etc/my.cnf配置 - 必要时重新初始化(注意备份数据)
- 查看错误日志:
03 数据库服务基础管理
1. 密码管理
设置密码:
# 命令行mysqladmin-urootpassword"1"# 命令执行成功,两个警告 警告1:命令行输入密码不安全 警告2:密码明文传输[root@db-centos-192 /usr/local]# mysqladmin -uroot password "1"mysqladmin:[Warning]Using a password on thecommandline interface can be insecure. Warning: Since password will be sent to serverinplain text, use ssl connection to ensure password safety.# 命令(数据库内)# 无密码登录mysql alter user root@'localhost'identified by'1';修改密码:
# 命令行mysqladmin-uroot-p旧密码 password"新密码"# 命令(数据库内)alter user root@'localhost'identified by'1';重置密码步骤:
# 1. 停止数据库/etc/init.d/mysqld stop# 确认关闭ps-ef|grepmysql# 2. 跳过授权表启动mysqld --defaults-file=/etc/my.cnf --skip-grant-tables&# 3. 连接数据库并重置密码mysql# 重新回复授权flush privileges;alter user root@'localhost'identified by'新密码';# 4. 正常重启pkillmysql /etc/init.d/mysqld start2. 连接管理
| 连接方式 | 命令示例 | 说明 |
|---|---|---|
| 本地连接 | mysql -uroot -p123456 | 默认使用/tmp/mysql.sock |
| 远程连接 | mysql -uroot -p123456 -h 10.0.0.52 -P 3306 | 需创建远程用户 |
创建远程用户示例:
createuserroot@'10.0.0.%'identifiedby'123456';createuserlottery@'172.16.1.%'identifiedby'lottery';10.0.0.%:网段10.0.0.53:单IP%:任意主机
推荐数据库远程连接工具:DBeaver(免费)、Navicat(付费)
3. 用户管理
-- 创建createuser'xiaoA'@'localhost'identifiedby'123456';-- 查看selectuser,hostfrommysql.user;-- 修改密码alteruser'xiaoA'@'localhost'identifiedby'新密码';-- 修改加密方式alteruser'xiaoA'@'localhost'identifiedwithmysql_native_passwordby'123456';-- 删除dropuser'xiaoA'@'localhost';-- 或deletefrommysql.userwhereuser='xiaoA';4. 权限管理
常见权限
| 权限 | 说明 |
|---|---|
select | 查询数据 |
insert | 插入数据 |
update | 修改数据 |
delete | 删除数据 |
create | 创建库/表 |
drop | 删除库/表 |
alter | 修改表结构 |
show databases | 查看数据库列表 |
授权与撤销
# *.* ---> blog.book 表示blog库里的book表权限-- 授权grantselect,inserton*.*to'root'@'10.0.0.%';-- 全部权限grantallon*.*to'root'@'10.0.0.%';-- 授权权限grantgrantoptionon*.*to'root'@'10.0.0.%';-- 查看权限showgrantsfor'root'@'10.0.0.%';-- 撤销权限revokeinserton*.*from'root'@'10.0.0.%';特殊权限说明:
all:除grant option外的几乎所有权限grant option:允许用户将自己拥有的权限授予他人usage:默认权限,仅允许登录
