精读笔记 · 第19章 部署数据库系统(MySQL)
大约 4 分钟
精读笔记 · 第19章 部署数据库系统(MySQL)
精读整理自 RHCE9 随堂讲义(原文字版 18 页)|同名视频约 13 节(第02套) 关联知识文件:
分章笔记/02-Oracle(MySQL 与 Oracle 对照)、02-06-服务器部署
一、数据库概念与分类
- 数据库由来三阶段:人工管理(账本)→ 文件系统(Excel)→ 数据库系统管理(DBMS)。
- 数据库系统 DBS 组成:DBMS(数据库管理系统:Oracle/MySQL/MariaDB/DB2/SQL Server/Percona)+ SQL 语言 + 访问技术。
- SQL(结构化查询语言)四大类(常考): | 类别 | 全称 | 语句 | 使用者 | | --- | --- | --- | --- | | DDL | 数据定义语言 | CREATE/DROP/ALTER(库表视图索引等) | 开发 | | DML | 数据操纵语言 | INSERT/DELETE/UPDATE | 开发 | | DQL | 数据查询语言 | SELECT | 开发/运维 | | DCL | 数据控制语言 | GRANT/REVOKE(权限) | DBA |
- 数据访问技术:ODBC(PHP)、JDBC(JAVA)、ASP.NET(C#)。
- 版本:MySQL 5.7 / 8.0(课程用 CentOS9 + 8.0;CentOS7 + 5.7)。
二、RPM 方式部署 MySQL(推荐,速度快)
- 环境:内存调到 2G、关防火墙、SELinux disabled(
systemctl stop/disable firewalld+setenforce 0+ 改 config)。 - 下载(中科大镜像):5.7 需 server/client/common/libs 四个包;8.0 需 server/libs/icu-data-files/common/client-plugins/client 六个包(el9 平台)。
- 装依赖:
yum install -y net-tools libaio perl。 - 安装:
yum -y install mysql-community-server;若报 mariadb-libs 冲突 →yum remove -y mariadb-libs再装mysql-community*。 - 启动:
systemctl start mysqld && enable。 - 查默认临时密码(启动成功才有):
grep 'password' /var/log/mysqld.log(冒号空格后全是密码)。 - 改密码:
mysqladmin -uroot -p'旧密码' password '新密码'。 - 登录:
mysql -uroot -p'密码'→show databases;看到系统库即成功 → 关机快照。
三、源码编译安装 MySQL(灵活但费时,了解)
- 优点:可按硬件/平台/组件/字符集定制,可同机装多实例;缺点:参数不懂易出问题、耗时长(编译 1 小时左右)。
- 准备:
yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake;下载 boost C++ 库(mysql 5.7 需要,如 boost_1_59_0)。 - 5.7 流程:建用户
groupadd mysql && useradd -r -g mysql -s /bin/false mysql→ 解压 mysql 源码 + boost →cmake . -DWITH_BOOST=boost_1_59_0/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=... -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 ...→make→make install→mkdir mysql-files+chown -R mysql.mysql→mysqld --initialize --user=mysql ...(屏幕打印临时密码,记下)→mysql_ssl_rsa_setup→ 写/etc/my.cnf(basedir/datadir)→cp mysql.server /etc/init.d/mysqld && chkconfig --add mysqld && chkconfig mysqld on→service mysqld start→ 用临时密码登录并 mysqladmin 改密。 - 8.0 要点:源码包自带 boost(mysql-boost-8.0.30.tar.gz);cmake 参数加
-DWITH_SYSTEMD=1(systemd 管理)、-DFORCE_INSOURCE_BUILD=1(CentOS9 强制编译)、-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock、可加存储引擎开关;make -j1 && make install;my.cnf 加user=mysql、lower_case_table_names=1(不区分表名大小写)。 - cmake 失败:删
CMakeCache.txt缓存重试;mysql5.6 后无-DWITH_READLINE。
四、YUM 仓库安装 MySQL8(实验环境最快)
- 建
/etc/yum.repos.d/mysql80.repo(本地/内网源:[mysql80] baseurl=ftp://... gpgcheck=0)→yum makecache→yum -y install mysql-community-server→systemctl start mysqld→netstat -anpt | grep 3306→ grep 日志拿临时密码 → mysqladmin 改密 → 登录。 - 注意 MySQL 默认端口 3306。
五、命令速查表
| 场景 | 命令 |
|---|---|
| 启动/自启 | systemctl start/enable/status mysqld |
| 查临时密码 | grep 'password' /var/log/mysqld.log |
| 改密码 | mysqladmin -uroot -p'旧密码' password '新密码' |
| 登录 | mysql -uroot -p'密码'(-u 用户 -p 密码) |
| 看端口 | `netstat -anpt |
| 编译依赖 | yum install -y gcc gcc-c++ cmake ncurses ncurses-devel bison make |
| 初始化(源码) | mysqld --initialize --user=mysql --basedir=... --datadir=... |
| 建库查库 | mysql 内:create database 名;、show databases; |
六、易错点
- 没查到临时密码=mysqld 没启动成功(先看日志/服务状态)。
mysqladmin密码含特殊字符要加引号;新密码复杂度不够会失败。- RPM 安装与 mariadb-libs 冲突是 CentOS 常见坑:先 remove 再装。
- 源码装 5.7 忘带 boost 目录会 cmake 报错(或用
-DDOWNLOAD_BOOST=1让 cmake 自己下)。 - CentOS9 上编译 mysql8 需
-DWITH_SYSTEMD=1、-DFORCE_INSOURCE_BUILD=1才稳。 - 数据库阶段能力全景(面试用):SQL、库表操作、约束/类型、用户权限、binlog 日志、备份恢复(mysqldump/xtrabackup)、主从复制(GTID)、读写分离(MyCAT)——后续 20~24 章展开。
七、实操清单
RPM 装 MySQL8.0:下载 6 包 → 装依赖 → 装 server → 启服务 → grep 临时密码 → mysqladmin 改密 → 登录 show databases → 快照。有余力再用 yum repo 法装一遍并对比。
八、本章自测
- DDL/DML/DQL/DCL 各代表什么、典型语句?2. MySQL 默认端口与默认日志位置?3. 首次启动如何拿临时密码?4. mysqladmin 改密语法?5. 源码编译 5.7 前必须准备的第三方库?6. RPM 安装报 mariadb-libs 冲突怎么处理?
