MySQL 运维实战系列(一)二进制安装 Mysql 8.0 01 数据库服务概述什么是数据库服务数据库是规范存储数据的服务程序用于存储网站或App界面看不到的数据支持快速、高效的数据调取。数据库服务分类类型特点代表产品关系型数据库数据存储类似Excel表格库文件表表格字段/记录行列MySQL, MariaDB, Oracle, PostgreSQL非关系型数据库无表格结构限制Redis缓存型, MongoDB文档型新型数据库结合关系型与非关系型特点支持分布式存储OB, TiDB兼容MySQL, 达梦, openGauss兼容Oracle02 数据库服务安装部署以MySQL为例安装方式对比方式优点缺点yum简单无法定制版本rpm可控需要解决依赖源码编译灵活慢、耗资源二进制推荐解压即用需手动配置二进制安装步骤MySQL 8.0.361. 操作系统环境准备# 我用的centos7.9# 关闭防火墙和SELinuxsystemctl stop firewalldsystemctl 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# 配置环境变量echoexport PATH$PATH:/usr/local/mysql/bin/etc/profilesource/etc/profile# 验证版本mysql-V若系统中已有MariaDB/MySQL需先卸载rpm-qa|grep-Emariadb|mysql|xargsrpm-e--nodeps# --nodeps忽略依赖检查mysql/bin 目录下的工具分类命令作用使用场景服务器启动与管理mysqldMySQL 服务器主程序直接启动数据库服务mysqld_safe安全的启动脚本进程异常自动重启生产环境推荐使用mysqladmin管理工具查看状态、关闭服务等快速管理操作客户端连接工具mysqlMySQL 命令行客户端连接数据库执行 SQL 命令mysqlshow显示数据库、表、列信息查看数据库结构备份与恢复mysqldump逻辑备份工具导出 SQL 文件最常用的备份工具mysqlbinlog解析二进制日志增量备份、数据恢复数据库检查与修复mysqlcheck检查、修复、优化表维护数据库表myisamchkMyISAM 表检查和修复修复 MyISAM 引擎表innochecksum检查 InnoDB 表空间完整性检测 InnoDB 文件损坏安全与配置mysql_secure_installation安全配置向导首次安装后加固安全mysql_config_editor加密保存登录凭据避免密码明文性能测试mysqlslap数据库压力测试工具测试并发性能错误诊断perror查看错误码含义查看错误说明升级工具mysql_upgrade升级数据库系统表MySQL 版本升级后运行3. 初始化设置# 配置文件 /etc/my.cnfcat/etc/my.cnfEOF [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-urootpassword1# 命令执行成功两个警告 警告1命令行输入密码不安全 警告2密码明文传输[rootdb-centos-192 /usr/local]# mysqladmin -uroot password 1mysqladmin:[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 rootlocalhostidentified by1;修改密码# 命令行mysqladmin-uroot-p旧密码 password新密码# 命令数据库内alter user rootlocalhostidentified by1;重置密码步骤# 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 rootlocalhostidentified by新密码;# 4. 正常重启pkillmysql /etc/init.d/mysqld start2. 连接管理连接方式命令示例说明本地连接mysql -uroot -p123456默认使用/tmp/mysql.sock远程连接mysql -uroot -p123456 -h 10.0.0.52 -P 3306需创建远程用户创建远程用户示例createuserroot10.0.0.%identifiedby123456;createuserlottery172.16.1.%identifiedbylottery;10.0.0.%网段10.0.0.53单IP%任意主机推荐数据库远程连接工具DBeaver免费、Navicat付费3. 用户管理-- 创建createuserxiaoAlocalhostidentifiedby123456;-- 查看selectuser,hostfrommysql.user;-- 修改密码alteruserxiaoAlocalhostidentifiedby新密码;-- 修改加密方式alteruserxiaoAlocalhostidentifiedwithmysql_native_passwordby123456;-- 删除dropuserxiaoAlocalhost;-- 或deletefrommysql.userwhereuserxiaoA;4. 权限管理常见权限权限说明select查询数据insert插入数据update修改数据delete删除数据create创建库/表drop删除库/表alter修改表结构show databases查看数据库列表授权与撤销# *.* --- blog.book 表示blog库里的book表权限-- 授权grantselect,inserton*.*toroot10.0.0.%;-- 全部权限grantallon*.*toroot10.0.0.%;-- 授权权限grantgrantoptionon*.*toroot10.0.0.%;-- 查看权限showgrantsforroot10.0.0.%;-- 撤销权限revokeinserton*.*fromroot10.0.0.%;特殊权限说明all除grant option外的几乎所有权限grant option允许用户将自己拥有的权限授予他人usage默认权限仅允许登录