一.课程回顾
1.数据库的产品介绍
RDBMS:oracle,mysql,PG,mssql
NOSQL:Redis,MongoDB,es,memcached
2.MySQL分支
oracle
mariadb
percona
rds,polardb,OB
3.MySQL版本选择
GA 6-12月
5.6:5.6.38 2017-9-13
5.7:5.7.20 2017-9-13
4.安装-初始化
5.6:/usr/local/mysql/scripts/mysql_install_db
5.7:mysqld --initialize-insecure
5.c/s
tcp/ip:mysql -uroot -p123 -h10.0.0.51 -p3306
socket:mysql -uroot -p123 -S /tmp/mysql.sock
6.MySQLD的程序结构
连接层:提供链接协议,用户验证,提供链接线程
sql层:语法,语义,权限,解析,优化,执行
存储引擎层:从磁盘上提取数据
7.逻辑结构
库:库名字,库属性
表:表名,列,行,属性
8.物理结构
宏观:
库:目录
表: myisam:frm,myi,myd
innodb:frm ibd
微观:
段
区
页
9.用户权限
create user 添加用户
drop user 删除用户
alter user 更改用户
mysql.user 查找用户
grant 创建并授权
remoke 回收权限
二.8.0.16版本二进制安装
1.上传安装包并且解压
2.修改版本名称,并授权
![图片.png](https://upload-images.jianshu.io/upload_images/18572205-64364106e507c763.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
跨版本升级:
1.不要挎多个版本
2.5.7之前的升级 mysql_upgrade(需要执行这条命令)
5.6升级到5.7
1.安装新版本软件
2.改软连接或配置文件中的basedir
3.用5.7的软件启动5.6的数据
4.mysql_upgrade -uroot -p123 -S /tmp/mysql.sock
注意:备份
5.7之后的直接下载版本 然后启动 数据自动升级
升级之前必须停掉数据库进行备份
跨版本升级:
1.不要挎多个版本
2.看好版本
三.MySQL的连接管理
1.MySQL linux中的连接协议
socket:本地登录,提前创建好localhost相关用户
TCPIP:远程登录,提前创建好远程用户
2.MySQL客户端
MySQL:[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
mysql -uoldboy -p -h10.0.0.51 -P3306
注意:
1.不要连接时把密码写到命令行上
2.写博客的时候,要脱敏
sqlyog:
navicat:
四.MySQL的启动关闭
1.sysv
service mysqld start/stop/restart/status
2.systemctl
systemctl start/stop/restart/status mysqld
3.手工启动方式(维护性操作时)
/etcinit.d/mysqld ----》 /usr/local/mysql/bin/mysqld_safe ------>/usr/local/mysql/bin/mysqld
例子:管理员用户root@'localhost' 密码丢失
1.通过跳过授权表+跳过TCP/IP的参数。启动数据库
--skip-grant-tables :跳过授权表,链接层关闭验证模块。
--skip-networking:关闭链接层TCP/IP,只留socket文件链接
关闭数据库:systemctl stop mysqld.service
跳过授权表登录:mysqld_safe --skip-grant-tables --skip-networking &
2.无密码登录
3.修改密码
flush privileges;
alter user root@'localhost' identified by '123';
4.正常重启数据库
systemctl restart mysqld
4.mysql的其他关闭方式
mysqladmin -uroot -p -S /tmp/mysql.sock shutdown
五.初始化配置
1.配置文件(/etc/my.cnf)*****
[root@db01 ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
叠加关系 如果四个配置文件都有 就会执行最后一个文件~/.my.cnf
自己定义默认位置:mysqld或者mysqld_safe 加入 --defaults-file=/opt/oldboy/conf
02.配置文件内容
1.影响范围
服务端启动和工作
本地客户端连接(socket)
2.内容结构
标签:
服务端:[mysqld] [mysqld_safe] [server]
客户端:[mysql] [mysqldump] [client]
配置参数:
参数名=值
#服务端
[mysqld] ... 标签
user=mysql
basedir=/usr/local/mysql ....软件的路径
datadir=/data/mysql/data ....目录的路径
#服务端的套接字文件
socket=/tmp/mysql.sock
服务端参数修改 需要重启
#客户端
[mysql]
socket=/tmp/mysql.sock
2.命令行***
3.编译安装*
六.多实例
1.规划
01.端口:3307,3308,3309
02.数据:/data/330{7..9}/data
03.配置文件:/data/330{7..9}/my.cng
Port=3307/3308/3309
server_id=7/8/9
datadir=/data/330{7..9}/data
socket=/tmp/mysql330{7..9}.sock
2.干活
01.创建相关目录并授权
mkdir -p /data/330{7..9}/data
chown -R mysql.mysql /data/*
02.初始化数据
mv /etc/my.cnf /tmp
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data
03.准备配置文件
cat > /data/3307/my.cnf < /data/3308/my.cnf < /data/3309/my.cnf <
04.准备启动脚本
cat > /etc/systemd/system/mysqld3307.service < /etc/systemd/system/mysqld3308.service < /etc/systemd/system/mysqld3309.service <
5.启动多实例并验证状态
[root@db01 ~]# systemctl start mysqld3307
[root@db01 ~]# systemctl start mysqld3308
[root@db01 ~]# systemctl start mysqld3309
[root@db01 ~]# netstat -tulnp|grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 8692/mysqld
tcp6 0 0 :::3307 :::* LISTEN 8912/mysqld
tcp6 0 0 :::3308 :::* LISTEN 8932/mysqld
tcp6 0 0 :::3309 :::* LISTEN 8980/mysqld
小作业:
mysql_multi 实现多实例环境
https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html