1. 程式人生 > 其它 >雲端計算運維學習---mysql資料庫的部署

雲端計算運維學習---mysql資料庫的部署

本文的mysql資料庫部署主要針對“5.7”版本(5.6版本也可以借鑑)

一、mysql資料庫的部署

1、下載mysql軟體包

下載地址:https://downloads.mysql.com/archives/community/

並根據自己的要求選擇相應的版本:
在這裡插入圖片描述
2、在Linux中建立"/server/tools"目錄,用於存放下載的軟體包

[[email protected] ~]# mkdir -p /server/tools
[[email protected] ~]# cd /server/tools/
[[email protected] /server/tools]
# yum install -y lrzsz #安裝完lrzsz工具後,直接將壓縮包拖拽到/server/tools目錄下即可 [[email protected] /server/tools]# ls mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

3、解壓軟體

[[email protected] /server/tools]# tar xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz   #解壓時最好使用“-v”引數,因為此檔案解壓時間有點長,不顯示解壓過程的話,會誤以為卡住了。
[[email protected]
~]# mkdir /application [[email protected] /server/tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql

4、建立資料庫管理使用者並設定環境變數

[[email protected] ~]# useradd -M mysql -s /sbin/nologin
/*
    在/etc/profile檔案中,永久設定環境變數PATH;
    vim /etc/profile
    要新增的內容
    export PATH=/application/mysql/bin:$PATH
*/ [[email protected] ~]# source /etc/profile [[email protected] ~]# mysql -V #產看mysql版本 mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper

5、建立資料路徑並授權
以上安裝的都是mysql資料的軟體資訊,現在我們要新新增一塊磁碟用來儲存以後mysql資料庫產生的資料資訊,從而實現資料資訊和軟體資訊的獨立。以防止一塊磁碟損壞時,所有的資料都丟失了。
1)在vmvare上db01虛擬機器新增一塊新的磁碟
2)格式化新磁碟並掛載

[[email protected] ~]# fdisk -l  #檢視磁碟是否新增成功
[[email protected] ~]# mkfs.xfs /dev/sdb #對新新增的磁碟進行格式化,然後才能掛載
[[email protected] ~]# mkdir /data   #建立/data目錄,用於儲存mysql資料庫產生的資料,所以需要將新的磁碟掛載在此目錄下。
[[email protected] ~]# blkid
[[email protected] ~]# vim /etc/fstab    #永久掛載
[[email protected] ~]# UUID="b7fde522-aa37-412a-9584-8313a673c5cc" /data xfs defaults 0 0
[[email protected] ~]# mount -a
[[email protected] ~]# df -h

6、授權

[[email protected] ~]# chown -R mysql:mysql /application/*
[[email protected] ~]# chown -R mysql:mysql /data
#讓和mysql資料相關的目錄,都讓mysql使用者來管理,否則mysql資料庫啟動時就可能會報錯

7、初始化mysql資料庫

[[email protected] ~]# mkdir -p /data/mysql/data 
[[email protected] ~]# chown -R mysql:mysql /data  #因為在/data目錄下新建立了目錄,新的目錄的屬主陣列不是mysql,所以需要重新授權
[[email protected] ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
2019-06-13T04:21:27.706564Z 1 [Note] A temporary password is generated for [email protected]: =mrV)_16is4U (這裡就是臨時密碼)
--initialize引數:在初始化的同時,也設定了資料庫的臨時密碼
密碼的複雜度:12位  4種字元
密碼過期時間:180天

初始化過程種可能出現報錯的情況:

mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
缺少"libaio.so.1"這個依賴包

解決:
[[email protected] ~]# yum install -y libaio-devel

若是想在初始化時,不想要臨時密碼:可使用"–initialize-insecure"

[[email protected] /data/mysql/data]# \rm -rf /data/mysql/data/*  (把上一種方式初始化產生的檔案資料刪除,重新初始化)
[[email protected] ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

tip:5.6版本的mysql資料庫初始化,只需執行"/application/mysql/scripts/mysql_install_db"命令即可

8、編輯配置檔案,否則mysql資料庫無法啟動

cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF

9、啟動mysql資料庫
1)第一種方式,針對的是CentOS 6 版本服務啟動的方式

[[email protected] /etc/init.d]# cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld 
[[email protected] /etc/init.d]# service mysqld restart
/*
   service mysqld stop  停止mysql服務
   service mysqld status 檢視mysql服務的狀態
*/

2)第二種方式,針對的是CentOS 7 版本服務啟動的方式
注意:使用第一種方式啟動了mysql服務的話,需要先關閉,才能使用第二種方式啟動。

cat >/usr/lib/systemd/system/mysqld.service<<EOF    #下面的資訊可以在mysql官方網站上找到
[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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf    #也可以在命令列執行此命令,啟動mysql服務,只不過這種方式啟動時,會把啟動日誌也列印在螢幕上。當mysql日誌檔案打不開或者無法寫入時,可使用這種方式產看日誌。
#--defaults-file引數:強制使用指定的配置檔案
LimitNOFILE = 5000
EOF

10、管理員密碼的設定([email protected]

[[email protected] ~]# mysqladmin -uroot password   #一般系統不建議直接在命令列設定密碼,這樣別人就會很容易產看系統歷史操作知曉資料庫的密碼
Enter password:   #(在提示的後面輸入自己要設定的密碼)

二、資料庫基礎維護

管理員使用者密碼忘記怎麼辦?
1、關閉資料庫

[[email protected] ~]# systemctl stop mysqld
Shutting down MySQL.. SUCCESS! 

2、啟動資料庫到維護模式

[[email protected] ~]# mysqld_safe --skip-grant-tables --skip-networking &   #(&:後臺執行)

--skip-grant-tables  #跳過授權表    跳過授權表,同時也就無法在資料庫中使用grant命令修改使用者的密碼,或者給使用者授權了。若是想用grant命令,則需要flush privileges 把授權表重新載入了
--skip-networking    #跳過遠端登入  這樣就只能本地操作資料庫,不能通過遠端連線軟體連線資料庫

3.登入mysql資料庫並修改密碼

[[email protected] ~]# mysql  #使用mysql 命令直接登入資料庫,無需指定使用者及密碼

更改操作:
mysql> alter user [email protected]'localhost' identified by '1';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
mysql> alter user [email protected]'localhost' identified by '1';   #(alter 也可修改使用者的密碼)
Query OK, 0 rows affected (0.01 sec)

tip:在mysql.user資料表中儲存著資料庫管理者的資訊,user host authentication_string 三個欄位分別儲存著使用者名稱、主機地址、使用者密碼資訊

4、關閉資料庫,使用新設定的密碼重新登入

mysql資料庫的日誌檔案位置:/data/mysql/data/主機名.err