MySQL 基础知识
1. 架构图
MySQL是插件式的存储引擎
通过分层和可插拔式的架构,可以根据不同的生产环境构建最优的系统。
MySQL 大体上分为连接层, 服务层(进行SQL语句相关的操作), 引擎层和存储层
其中连接层负责接受校验外部连接, 保护MySql 安全, 服务层提供语句检查和语句优化器, 以及缓存匹配等服务, 引擎层实现插件模式, 可插拔的方式提供, 默认和常用的引擎为 InnoDB.
2. SQL 语句执行顺序
- 先加载需要被查询的表, from, join, on
- 执行 where 过滤条件
- 执行分组数据 -> 分组结果支持执行 having 过滤
- 查看 select 需要的列
- order by 对结果进行排序
- limit 对结果进行分页.
MySQL 基本操作
1. 查看数据库, 切换库, 查看表操作
mysql> show databases; # 查看所有数据库结构
mysql> use mysql; # 使用数据库
mysql> show tables; # 查看目标数据库中的表
mysql> select * from admin; # 基本查询
2. 查看表的存储引擎
mysql> SHOW TABLE STATUS from myemployees where name = 'mylock';
3. 创建表
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) engine innodb;
4. 增加项
-- 1. 插入一条或多条记录
insert into user(`username`, `password`) values('zhangsan', '123456'), ('lisi', '234567');
5. 修改项
-- 1. 修改全部列
update user set password = '666666';
-- 2. where限制修改部分列
update user set password = '666666' where id = 10;
6. 删除项
-- 1. 删除 user 表中所有数据
delete from user;
-- 2. 条件筛选删除 user 表中数据
delete from user where id > 10;
7. 删除表
-- 删除表
drop table user;
Ubuntu 安装MySQL 5.7
下载页面与下载地址
MySQL :: Download MySQL Community Server (Archived Versions)
下载完成后, 使用 tar 加压 MySQL 压缩包, 解压后如下
安装 MySQL 命令顺序
sudo su # 切换为 ROOT 用户.
dpkg -i libmysqlclient20_5.7.36-1ubuntu18.04_amd64.deb
dpkg -i libmysqlclient-dev_5.7.36-1ubuntu18.04_amd64.deb
dpkg -i libmysqld-dev_5.7.36-1ubuntu18.04_amd64.deb
apt-get install libaio1 # 安装不上.
dpkg -i mysql-community-client_5.7.36-1ubuntu18.04_amd64.deb
dpkg -i mysql-client_5.7.36-1ubuntu18.04_amd64.deb
dpkg -i mysql-community-source_5.7.36-1ubuntu18.04_amd64.deb
dpkg -i mysql-community-server_5.7.36-1ubuntu18.04_amd64.deb
apt-get install libmecab2 # 设置 MYSQL ROOT 密码 deepcam
dpkg -i mysql-community-server_5.7.36-1ubuntu18.04_amd64.deb
配置 MySQL 准许外部访问
# 1. 修改 /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
# 2. 修改 mysql.user表, 准许root 用户外部访问
use mysql;
# 更新 root 用户 主机允许其他机器访问
update user set host = '%' where user = 'root';
# 强制刷新.
flush privileges;
# 查询用户情况
select host, user from user where user="root"
- 更新前
- 更新后
使用 JDBC 连接 MYSQL (Java)
jdbc:mysql://172.22.7.15:3306/image_entries?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimeznotallow=Asia/Shanghai
- 参数解释:
- useSSL: 是否使用ssl连接
- characterEncoding: 设置连接端编码使用 utf-8
- serverTimezone: 设置服务器时区为 +8