主题:数据库概述、MySQL安装与管理基础
一、为什么要学数据库?
在互联网公司中,数据是最值钱的东西。
比如你在网站上注册账号、发文章、上传视频,这些信息都要存下来。
数据库就是用来存这些信息的专业软件。
学数据库的好处:
- 是求职必备技能
- 影响薪资和职级
- 保证数据安全和高效读写
二、数据库是啥?
1. 数据的两种形式
| 识别方式 | 例子 |
|---|---|
| 人类能看懂 | 文字、图片、视频、数字、符号 |
| 电脑能看懂 | 二进制(0和1) |
数据库的作用就是:把人类看得懂的数据,转成电脑能存的二进制,并且管好、存好、用好。
三、数据库的分类
1. 关系型数据库(RDBMS)
- 像Excel表格,存的是二维表
- 重视数据安全
- 用SQL语言操作
- 例子:MySQL、Oracle、PostgreSQL、SQL Server
📌 MySQL 是咱们这门课的主角
关系型数据库的4层结构:
- DBMS:数据库管理系统(比如MySQL软件)
- 数据库:存数据的“仓库”
- 表:一个仓库里的一个柜子
- 字段:柜子里的一个个格子
2. 非关系型数据库(NoSQL)
- 不一定是表格,结构灵活
- 重视读写速度
- 例子:Redis(键值对)、MongoDB(文档)、ES(搜索)
3. 新型数据库(NewSQL)
- 国产数据库,适合高并发
- 例子:TiDB、OceanBase、PolarDB
四、常见面试题(背下来)
Q1:你熟悉的数据库有哪些?你们公司用了哪些?
A:
关系型:MySQL、Oracle、PG;
NoSQL:Redis、MongoDB、ES;
云数据库:RDS。
Q2:你喜欢MySQL吗?怎么学的?
A:喜欢,因为它开源、稳定、社区活跃。我通过官方文档、书籍、网上案例学习。技能包括:安装、SQL语句、用户权限、备份恢复、主从复制等。
五、MySQL版本说明
- MySQL 5.6:快淘汰了
- MySQL 5.7:部分企业还在用
- MySQL 8.0:目前最主流
版本命名:
- GA:稳定版
- C:社区版(免费)
- E:企业版(收费)
六、MySQL的优点
- 稳定,很少宕机
- 开源免费
- 社区活跃,遇到问题好查
- 安装简单,体积小
- 支持多种操作系统和编程语言
七、MySQL安装(Linux环境,二进制方式)
1. 准备工作
# 查看是否安装了mariadb(冲突)
rpm -qa | grep mariadb
yum remove -y mariadb-libs
# 安装依赖
yum install -y libaio-devel
2. 解压安装包
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
3. 配置环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
source /etc/profile
mysql -V # 查看版本
4. 创建用户和目录
useradd mysql
mkdir -p /data/3306/data /data/3306/logs
chown -R mysql /data/
5. 初始化数据库(8.0版本)
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
如果是
--initialize安全模式,会生成随机密码,第一次登录必须改密码。
6. 启动MySQL
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf &
八、MySQL服务管理
1. 启动/关闭方式
| 启动方式 | 关闭方式 |
|---|---|
| mysqld & | kill(不推荐) |
| mysqld_safe & | kill |
| service mysqld start | service mysqld stop |
| systemctl start mysqld | systemctl stop mysqld |
登录MySQL后执行 shutdown; | |
| mysqladmin shutdown |
2. 设置密码
# 第一次设置
mysqladmin password '123456'
# 修改密码
mysqladmin -uroot -p旧密码 password '新密码'
或者在MySQL里:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
九、MySQL用户管理
1. 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
- 主机名可以是:
localhost(只能本机登录)、%(任意主机)、192.168.1.%(某个网段)
2. 删除用户
DROP USER '用户名'@'主机名';
3. 锁定/解锁用户
ALTER USER '用户名'@'主机名' ACCOUNT LOCK;
ALTER USER '用户名'@'主机名' ACCOUNT UNLOCK;
十、MySQL权限管理
1. 授权
GRANT SELECT, INSERT ON 数据库.* TO '用户'@'主机';
GRANT ALL PRIVILEGES ON *.* TO '管理员'@'localhost' WITH GRANT OPTION;
2. 查看权限
SHOW GRANTS FOR '用户'@'主机';
3. 回收权限
REVOKE DELETE ON *.* FROM '用户'@'主机';
十一、MySQL连接方式
1. 本地连接(通过socket)
mysql -uroot -p -S /tmp/mysql.sock
2. 远程连接(通过TCP/IP)
mysql -u用户名 -p -h IP地址 -P 3306
也可以用图形化工具如 Navicat 连接。
十二、MySQL配置文件
- 默认路径顺序:
/etc/my.cnf→/etc/mysql/my.cnf→/usr/local/mysql/etc/my.cnf→~/.my.cnf - 常用配置:
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
port=3306
socket=/tmp/mysql.sock
server_id=1
[mysql]
socket=/tmp/mysql.sock
十三、MySQL多实例
在一台服务器上跑多个MySQL服务,叫多实例。
多实例规划
| 实例 | 端口 | 数据目录 | 配置文件 | socket文件 |
|---|---|---|---|---|
| 实例1 | 3307 | /data/3307/data | /data/3307/my.cnf | /tmp/mysql3307.sock |
| 实例2 | 3308 | /data/3308/data | /data/3308/my.cnf | /tmp/mysql3308.sock |
启动方式:
mysqld_safe --defaults-file=/data/3307/my.cnf &
十四、MySQL版本升级
升级方式
- Inplace升级:原地升级,风险大
- 迁移升级:装新库,迁移数据,更安全
升级注意事项
- 必须GA版本之间升级
- 5.6 → 5.7 → 8.0 可以跨,但最好先升到最新小版本
- 升级前必须备份数据
- 8.0之后支持升级预检查(mysqlshell)
升级后回滚
- 小版本可回滚,8.0不支持回滚,只能恢复备份
十五、MySQL 5.7 和 8.0 的主要区别
| 项目 | 5.7 | 8.0 |
|---|---|---|
| 授权方式 | grant直接创建用户 | 必须先create user再grant |
| 密码插件 | mysql_native_password | caching_sha2_password(更安全) |
| 角色功能 | 无 | 支持角色(role) |
| 升级预检 | 无 | 有(mysqlshell) |
十六、忘记root密码怎么办?
- 停止MySQL
- 用跳过授权表方式启动:
mysqld_safe --skip-grant-tables --skip-networking &
- 无密码登录:
mysql -uroot
- 加载权限表到内存中:
FLUSH PRIVILEGES;
- 改密码,将内存中更改后的授权表重新写入数据库中:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
- 重启MySQL正常启动
✅ 总结
Day01 的内容主要帮你建立对数据库的整体认识,重点掌握:
- 数据库分类
- MySQL安装流程
- 用户和权限管理
- 配置文件和启动方式
- 多实例和升级概念
Comments NOTHING