文章目錄
- 0. 老男孩思想-老男孩名言警句
- 1. 數據庫服務安裝部署
- 1.1 下載安裝包
- 1.2 系統環境準備
- 1.2.1 關閉防火墻
- 1.2.2 關閉selinux
- 1.2.3 安裝依賴軟件
- 1.2.4 卸載沖突軟件
- 1.3 安裝程序
- 1.3.1 上傳軟件包
- 1.3.2 配置環境變量
- 1.3.3 創建數據庫存儲數據目錄
- 1.3.4 創建數據庫程序管理用戶
- 1.3.5 初始化數據庫
- 1.4 編寫服務配置文件
- 1.5 啟動數據庫服務
- 2. 數據庫服務密碼管理
- 2.1 設置密碼
- 2.2 修改密碼
- 2.2.1 命令,需原密碼
- 2.2.2 sql語句,無需原密碼
- 2.3 重置密碼(忘記密碼的情況)
- 2.3.1 步驟一:備份數據庫數據
- 2.3.2 步驟二:關閉數據庫服務程序
- 2.3.3 步驟三:采用免密方式啟動數據庫
- 2.3.4 步驟四:重置密碼
- 2.3.5 步驟五:重新啟動數據庫
- 3. 數據庫服務用戶管理
- 3.1 創建用戶
- 3.1.1 白名單
- 3.1.2 密碼插件
- 3.2 查看用戶信息
- 3.3 刪除用戶信息
- 3.3.1 drop-刪除單個用戶
- 3.3.2 delete-批量刪除用戶
- 4. 數據庫服務權限管理
- 4.1 查看MySQL數據庫的所有權限
- 4.2 基礎權限
- 4.3 設置用戶權限
- 4.4 查看用戶權限
- 4.5 回收用戶權限
- 5. 數據庫服務配置管理
- 5.1 加載數據庫配置文件
- 5.1.1 采用默認方式加載
- 5.1.2 自定義加載配置文件
- 5.2 編寫配置文件
- 6. 數據庫服務連接管理
- 6.1數據庫連接方式
- 6.2 數據庫連接方法
- 6.2.1 數據庫客戶端命令
- 6.2.2 數據庫客戶端工具-MySQL Workbench
- 7. 數據庫服務實例創建
- 7.1 為什么在系統中要運行服務的多實例?
- 7.2 相同版本數據庫實現多實例部署
- 7.2.1 步驟一:安裝數據庫程序(8.0.36)
- 7.2.2 步驟二:編寫配置文件
- 7.2.3 步驟三:初始化不同數據庫
- 7.2.4 步驟四:啟動多實例數據庫進程
- 8. 思維導圖
0. 老男孩思想-老男孩名言警句
- 技術的提升僅是量的積累,思想的提升才是質的飛躍
- 成功絕非偶然,而是正確選擇和持續努力后的必然
- 成功最有效的途徑就是不斷的和有經驗的、成功的人學習
- 學習成功人士的思維和習慣,是成功的捷徑
- 要做別人不敢做、做不到的事,才能從競爭者勝出
- 自己最不想改變的,往往是自己最需要改變的;要多接收、多學習他人的思維或習慣
- 找一個能讓自己快速成長的企業,比多1-2千工資更重要
- 身份影響認知,氣度主導格局,性格決定命運
- 超越自我,就是做自己不想做的事
- 永遠不要試圖改變一個人,只能去包容他
- 如果自己不能成為大佬,可以先成為大佬的贊美者
1. 數據庫服務安裝部署
- 博客:
MySQL數據庫服務安裝部署 - aiweiwei24 - 博客園](https://www.cnblogs.com/oldboy-heqing/articles/19024691)
[CentOS7.9使用yum方式安裝mysql8.0.27(2022最新版) - 老男孩老師 - 博客園](https://www.cnblogs.com/oldboy666/p/15559963.html)
00章節-MySQL數據庫服務安裝部署.pdf 鏈接: https://pan.baidu.com/s/19QqQnCOkcrL-ao2Iu9L05A?pwd=k3m5 提取碼: k3m5
01章節-MySQL數據庫存儲服務概述.pdf 鏈接: https://pan.baidu.com/s/19aXuUnqNMt57AlHCOb7ywA?pwd=ip8t 提取碼: ip8t
1.1 下載安裝包
官網:MySQL
- 下載歷史版本:
[MySQL :: Download MySQL Community Server (Archived Versions)](https://downloads.mysql.com/archives/community/)
- 軟件包:
mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz 鏈接: https://pan.baidu.com/s/1lnrLcEVtlj_SriZzm1SScw?pwd=5m74 提取碼: 5m74
1.2 系統環境準備
- 系統:kylin v10
[root@db01 ~]# uname -r
4.19.90-52.22.v2207.ky10.x86_64
[root@db01 ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Lance)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Lance)"
ANSI_COLOR="0;31"
1.2.1 關閉防火墻
[root@db01 ~]# systemctl stop firewalld.service
[root@db01 ~]# systemctl disable firewalld.service
[root@db01 ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)
1.2.2 關閉selinux
# 臨時關閉
[root@db01 ~]# setenforce 0
setenforce: SELinux is disabled
# 永久關閉
[root@db01 ~]# vim /etc/selinux/config
# 查看selinux狀態
[root@db01 ~]# getenforce
Disabled
1.2.3 安裝依賴軟件
yum install -y libaio-devel
1.2.4 卸載沖突軟件
- yum remove `rpm -qa |grep mysql`
- yum remove `rpm -qa |grep mariadb`
1.3 安裝程序
- 安裝路徑:
/usr/local/
1.3.1 上傳軟件包
# 解壓
[root@db01 /usr/local]# tar xf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
# 創建軟鏈接
[root@db01 /usr/local]# ln -s mysql-8.0.36-linux-glibc2.12-x86_64 mysql
1.3.2 配置環境變量
export PATH="$PATH:/usr/local/mysql/bin"
[root@db01 /usr/local]# vim /etc/profile
[root@db01 /usr/local]# source /etc/profile
# 查看當前數據庫版本
[root@db01 /usr/local]# mysql -V
mysql Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)
1.3.3 創建數據庫存儲數據目錄
[root@db01 /usr/local]# mkdir -p /data/3306/data/
1.3.4 創建數據庫程序管理用戶
[root@db01 /usr/local]# useradd mysql -M -s /sbin/nologin
useradd:用戶“mysql”已存在
[root@db01 /usr/local]# chown -R mysql:mysql /data/3306/data/
1.3.5 初始化數據庫
- 生成數據庫的默認數據
- 查看幫助手冊:
mysqld --help --verbose
- 命令:
mysqld --initialize-insecure --datadir=/data/3306/data--user=mysql --basedir=/usr/local/mysql
- 數據庫初始化不同版本差異
版本信息 | 命令信息 | 初始化操作參數 | 備注說明 |
---|---|---|---|
5.5 5.6 | mysql_install_db | 初始化的命令不一致,參數相同(無管理員密碼) | |
5.7 8.0 | mysqld | –initialize-insecure | 表示不安全方式初始化(無管理員密碼) |
–initialize | 表示安全方式初始化(有隨機默認管理員密碼) |
1.4 編寫服務配置文件
[root@db01 ~]# vim /etc/my.cnf
[root@db01 ~]# cat /etc/my.cnf
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
1.5 啟動數據庫服務
- 早先的Linux系統的各種服務不是通過systemctl管理的,而是通過腳本控制的,這些腳本一般放在/etc/init.d/目錄下
# mysql啟動管理腳本文件
[root@db01 ~]# file /usr/local/mysql/support-files/mysql.server
/usr/local/mysql/support-files/mysql.server: POSIX shell script, ASCII text executable
[root@db01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 啟動mysql服務
[root@db01 ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!
[root@db01 ~]# /etc/init.d/mysqld statusSUCCESS! MySQL running (8311)
# 檢查
[root@db01 ~]# ps -ef |grep [m]ysql
root 8160 1 0 21:22 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/db01.pid
mysql 8311 8160 5 21:22 pts/1 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=db01.err --pid-file=/data/3306/data/db01.pid --socket=/tmp/mysql.sock
[root@db01 ~]# ss -lntup |grep [m]ysql
tcp LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=8311,fd=22))
tcp LISTEN 0 128 *:3306 *:* users:(("mysqld",pid=8311,fd=24))
- 設置MySQL服務開機自啟動:
chkconfig --add mysqld
2. 數據庫服務密碼管理
2.1 設置密碼
- 命令:
mysqladmin -uroot password '密碼'
2.2 修改密碼
2.2.1 命令,需原密碼
mysqladmin -uroot -p舊命令 password "新密碼"
2.2.2 sql語句,無需原密碼
alter user root@'localhost' identified by "新密碼";
2.3 重置密碼(忘記密碼的情況)
- 無法進入數據庫,且不知道原密碼
2.3.1 步驟一:備份數據庫數據
2.3.2 步驟二:關閉數據庫服務程序
[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS!
[root@db01 ~]# /etc/init.d/mysqld statusERROR! MySQL is not running
2.3.3 步驟三:采用免密方式啟動數據庫
- 類似于Linux系統的救援模式
- 命令:
mysqld --skip-grant-tables &
- –skip-grant-tables: 跳過授權表(忽略數據庫驗證機制)
2.3.4 步驟四:重置密碼
- 當前已關閉授權表驗證機制,在修改密碼之前還需加載授權表
- 重新加載權限表:
FLUSH PRIVILEGES;
2.3.5 步驟五:重新啟動數據庫
3. 數據庫服務用戶管理
3.1 創建用戶
語法:create user 用戶名@‘白名單’ identified with 密碼插件 by ‘密碼’;
3.1.1 白名單
- 作用一:用于指定用戶登錄數據庫的方式
- 本地登錄:localhost
- 遠程登錄:10.0.0.10、10.0.0.%、%
- 作用二:限制指定的用戶才能登錄數據庫
- 限制某個主機地址:10.0.0.100
- 限制C類網絡地址:192.168.1.%
- 限制B類網絡地址:172.16.%
- 限制A類網絡地址:10.%
- 不做限制:%
3.1.2 密碼插件
作用:增加數據庫密碼的安全性
- 查看用戶的密碼信息:
select user,host,authentication_string,plugin from mysql.user;
- 密碼插件設置方式:
mysql_native_password
:8.0版本前默認密碼加密方式caching_sha2_password
:8.0版本后默認密碼加密方式
3.2 查看用戶信息
- 語句:
select user,host,authentication_string,plugin from mysql.user;
select * from mysql.user\G
:分行顯示數據
3.3 刪除用戶信息
3.3.1 drop-刪除單個用戶
- sql語句:
drop user 用戶名@'白名單';
3.3.2 delete-批量刪除用戶
- sql語句:
delete from mysql.user where user='用戶名';
4. 數據庫服務權限管理
4.1 查看MySQL數據庫的所有權限
- 命令:
show privileges;
4.2 基礎權限
Privilege(權限) | Context(管理對象) | Comment(解釋) |
---|---|---|
Alter | Tables | 管理表的字段、索引 |
Create | Databases,Tables,Indexes | 可以創建數據庫、表、索引 |
Create user | Server Admin(管理員) | 可以創建新用戶 |
Drop | Databases,Tables | 可以刪除數據庫、表、視圖 |
Delete | Tables | 可以刪除表中數據行 |
Insert | Tables | 可以向表中添加數據 |
Update | Tables | 可以修改表中數據 |
Select | Tables | 可以查詢表中數據 |
Usage | Server Admin | No privileges(沒有任何操作能力)- allow connect only 使用此權限可以連接數據庫 |
4.3 設置用戶權限
語法:grant 權限信息 on 對象信息(數據庫和表) to 用戶名@‘白名單’;
各個權限用’,'隔開,表示所有權限可使用’all’關鍵字;
數據庫和表可以使用通配符:‘*’
- 對于用戶:skx@‘localhost’,設置該用戶對blog數據庫有創建、刪除的權限,以及對數據庫中表有增刪改查的權限。
- sql語句:
grant Create,Drop,Delete,Insert,Update,Select on blog.* to skx@'localhost';
4.4 查看用戶權限
語法:show grants for 用戶名@‘白名單’;
4.5 回收用戶權限
- 添加權限直接使用權限設置語句即可。
回收權限語法:revoke 權限信息 on 對象信息 from 用戶名@‘白名單’;
- 對于skx@'localhost’用戶,回收Drop權限
- sql語句:
revoke Drop on blog.* from skx@'localhost';
5. 數據庫服務配置管理
5.1 加載數據庫配置文件
- 配置文件:my.cnf
5.1.1 采用默認方式加載
- 官方定義配置文件可以放置的路徑
5.1.2 自定義加載配置文件
- 關閉mysql服務,并自定義配置文件
[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 ~]# mv /etc/my.cnf /data/3306/mysql.conf
- 啟動mysql服務,指定配置文件位置:
mysqld --defaults-file=/data/3306/mysql.conf &
5.2 編寫配置文件
6. 數據庫服務連接管理
6.1數據庫連接方式
- 本地連接:必須設置好socket(套接字文件 確認客戶端使用套接字文件和服務端創建的套接字文件一致即可)
mysql -uroot -pxiaoQ123 -S /tmp/mysql3306.sock
- 遠程連接:設置好TCP、IP信息
mysql -uroot -pxiaoQ123 -h10.0.0.51 -P3306
6.2 數據庫連接方法
6.2.1 數據庫客戶端命令
mysql -uroot -pxiaoQ123 -S /tmp/mysql3306.sock – 本地連接
mysql -uroot -pxiaoQ123 -h10.0.0.51 -P3306 – 遠程連接
弊端:無法實現命令提示或補全功能
6.2.2 數據庫客戶端工具-MySQL Workbench
- 優點:可以圖形化操作管理數據庫,操作管理簡便
- 官網地址:
[MySQL :: Download MySQL Workbench](https://dev.mysql.com/downloads/workbench/)
- 軟件包:
mysql-workbench-community-8.0.43-winx64.msi 鏈接: https://pan.baidu.com/s/1I7dpk6_GdISOa3mobRmvpw 提取碼: 5ki8
- 創建root遠程連接用戶
- 使用客戶都工具連接數據庫
- 查看某張表
7. 數據庫服務實例創建
數據庫實例就是數據庫服務的進程
- 數據庫服務系統環境中,可以有多個數據庫實例,稱為數據庫多實例
7.1 為什么在系統中要運行服務的多實例?
- 類似于虛擬化、docker,更充分的使用系統硬件資源
- 可以將數據庫資源進行隔離,不同的業務數據存放在不同的數據庫中
7.2 相同版本數據庫實現多實例部署
- 注意事項:
- 配置文件不同
- socket套接字文件不同
- 端口不同
- 啟動的進程不同
7.2.1 步驟一:安裝數據庫程序(8.0.36)
7.2.2 步驟二:編寫配置文件
# 創建不同實例的數據存儲目錄
mkdir -p /data/{3307..3309}/data
# 配置文件
cat >> /data/3307/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
port=3307
mysqlx=0
EOFcat >> /data/3308/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
port=3308
mysqlx=0
EOFcat >> /data/3309/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock
port=3309
mysqlx=0
EOF
7.2.3 步驟三:初始化不同數據庫
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --datadir=/data/3307/data --user=mysql --basedir=/usr/local/mysql
mysqld --initialize-insecure --datadir=/data/3308/data --user=mysql --basedir=/usr/local/mysql
mysqld --initialize-insecure --datadir=/data/3309/data --user=mysql --basedir=/usr/local/mysql
7.2.4 步驟四:啟動多實例數據庫進程
mysqld --defaults-file=/data/3307/mysql.conf &
mysqld --defaults-file=/data/3308/mysql.conf &
mysqld --defaults-file=/data/3309/mysql.conf &
# 登錄數據庫
mysql -S /tmp/mysql3307.sock
mysql -S /tmp/mysql3308.sock
mysql -S /tmp/mysql3309.sock
8. 思維導圖
https://kdocs.cn/join/gpuxq6r?f=101\r\n邀請你加入共享群「老男孩教育Linux運維99期-孫克旭」一起進行文檔協作
Linux系統運維班課程-Day01-數據庫課程知識梳理.xmind 鏈接: https://pan.baidu.com/s/1BTKZu-cBNeAHjkvL9FCZYw?pwd=s7ec 提取碼: s7ec