一.課程回顧
1.數(shù)據(jù)庫(kù)的產(chǎn)品介紹
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的程序結(jié)構(gòu)
連接層:提供鏈接協(xié)議弃锐,用戶驗(yàn)證遏佣,提供鏈接線程
sql層:語(yǔ)法白粉,語(yǔ)義,權(quán)限雪情,解析遵岩,優(yōu)化,執(zhí)行
存儲(chǔ)引擎層:從磁盤(pán)上提取數(shù)據(jù)
7.邏輯結(jié)構(gòu)
庫(kù):庫(kù)名字巡通,庫(kù)屬性
表:表名尘执,列,行宴凉,屬性
8.物理結(jié)構(gòu)
宏觀:
庫(kù):目錄
表: myisam:frm誊锭,myi,myd
innodb:frm ibd
微觀:
段
區(qū)
頁(yè)
9.用戶權(quán)限
create user 添加用戶
drop user 刪除用戶
alter user 更改用戶
mysql.user 查找用戶
grant 創(chuàng)建并授權(quán)
remoke 回收權(quán)限
二.8.0.16版本二進(jìn)制安裝
1.上傳安裝包并且解壓
2.修改版本名稱弥锄,并授權(quán)
![圖片.png](https://upload-images.jianshu.io/upload_images/18572205-64364106e507c763.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
跨版本升級(jí):
1.不要挎多個(gè)版本
2.5.7之前的升級(jí) mysql_upgrade(需要執(zhí)行這條命令)
5.6升級(jí)到5.7
1.安裝新版本軟件
2.改軟連接或配置文件中的basedir
3.用5.7的軟件啟動(dòng)5.6的數(shù)據(jù)
4.mysql_upgrade -uroot -p123 -S /tmp/mysql.sock
注意:備份
5.7之后的直接下載版本 然后啟動(dòng) 數(shù)據(jù)自動(dòng)升級(jí)
升級(jí)之前必須停掉數(shù)據(jù)庫(kù)進(jìn)行備份
跨版本升級(jí):
1.不要挎多個(gè)版本
2.看好版本
三.MySQL的連接管理
1.MySQL linux中的連接協(xié)議
socket:本地登錄丧靡,提前創(chuàng)建好localhost相關(guān)用戶
TCPIP:遠(yuǎn)程登錄,提前創(chuàng)建好遠(yuǎn)程用戶
2.MySQL客戶端
MySQL:[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
mysql -uoldboy -p -h10.0.0.51 -P3306
注意:
1.不要連接時(shí)把密碼寫(xiě)到命令行上
2.寫(xiě)博客的時(shí)候籽暇,要脫敏
sqlyog:
navicat:
四.MySQL的啟動(dòng)關(guān)閉
1.sysv
service mysqld start/stop/restart/status
2.systemctl
systemctl start/stop/restart/status mysqld
3.手工啟動(dòng)方式(維護(hù)性操作時(shí))
/etcinit.d/mysqld ----》 /usr/local/mysql/bin/mysqld_safe ------>/usr/local/mysql/bin/mysqld
例子:管理員用戶root@'localhost' 密碼丟失
1.通過(guò)跳過(guò)授權(quán)表+跳過(guò)TCP/IP的參數(shù)温治。啟動(dòng)數(shù)據(jù)庫(kù)
--skip-grant-tables :跳過(guò)授權(quán)表,鏈接層關(guān)閉驗(yàn)證模塊戒悠。
--skip-networking:關(guān)閉鏈接層TCP/IP熬荆,只留socket文件鏈接
關(guān)閉數(shù)據(jù)庫(kù):systemctl stop mysqld.service
跳過(guò)授權(quán)表登錄:mysqld_safe --skip-grant-tables --skip-networking &
2.無(wú)密碼登錄
3.修改密碼
flush privileges;
alter user root@'localhost' identified by '123';
4.正常重啟數(shù)據(jù)庫(kù)
systemctl restart mysqld
圖片.png
4.mysql的其他關(guān)閉方式
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
疊加關(guān)系 如果四個(gè)配置文件都有 就會(huì)執(zhí)行最后一個(gè)文件~/.my.cnf
自己定義默認(rèn)位置:mysqld或者mysqld_safe 加入 --defaults-file=/opt/oldboy/conf
02.配置文件內(nèi)容
1.影響范圍
服務(wù)端啟動(dòng)和工作
本地客戶端連接(socket)
2.內(nèi)容結(jié)構(gòu)
標(biāo)簽:
服務(wù)端:[mysqld] [mysqld_safe] [server]
客戶端:[mysql] [mysqldump] [client]
配置參數(shù):
參數(shù)名=值
#服務(wù)端
[mysqld] ... 標(biāo)簽
user=mysql
basedir=/usr/local/mysql ....軟件的路徑
datadir=/data/mysql/data ....目錄的路徑
#服務(wù)端的套接字文件
socket=/tmp/mysql.sock
服務(wù)端參數(shù)修改 需要重啟
#客戶端
[mysql]
socket=/tmp/mysql.sock
2.命令行***
3.編譯安裝*
六.多實(shí)例
1.規(guī)劃
01.端口:3307,3308,3309
02.數(shù)據(jù):/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.創(chuàng)建相關(guān)目錄并授權(quán)
mkdir -p /data/330{7..9}/data
chown -R mysql.mysql /data/*
02.初始化數(shù)據(jù)
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.準(zhǔn)備配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3307/data
port=3307
server_id=7
socket=/tmp/mysql3307.sock
EOF
cat > /data/3308/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3308/data
port=3308
server_id=8
socket=/tmp/mysql3308.sock
EOF
cat > /data/3309/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3309/data
port=3309
server_id=9
socket=/tmp/mysql3309.sock
EOF
04.準(zhǔn)備啟動(dòng)腳本
cat > /etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysqld3308.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysqld3309.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF
5.啟動(dòng)多實(shí)例并驗(yàn)證狀態(tài)
[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
小作業(yè):
mysql_multi 實(shí)現(xiàn)多實(shí)例環(huán)境
https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html