OC 成員變數,例項變數,屬性變數 @property @synthesize
阿新 • • 發佈:2020-11-18
一、二進位制包下載:地址:https://downloads.mariadb.org/mariadb/10.2.35/ 選擇你要安裝的版本;該地址有三種資料格式的檔案:Source——原始碼Binaries——二進位制Packages——rpm包(針對centos,Redhat,Ubuntu系列的)
下載二進位制包:mariadb-10.2.35-linux-x86_64.tar.gz版本 //linux表示在linux系統中效驗過的程式。二進位制10.2.35版本配置教程地址:https://mariadb.com/kb/en/installing-mariadb-binary-tarballs/注:原始碼只帶版本號,不會帶linux或者window提示,包比較小,只有69.9MB左右,而二進位制檔案,是在linux或者window上編譯好了的,會帶有一些提示資訊。
二、安裝二進位制程式mariadb:1、檢查系統環境:
知識點一:1、在虛擬機器下新增一塊空磁碟並建立邏輯卷(用來作為mysql資料庫存放生產資料的目錄)
知識點三:3、配置啟動程式指令碼:修改二進位制檔案,發現安全指令碼找不到/tmp.my.sock檔案位置
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)
下載二進位制包:mariadb-10.2.35-linux-x86_64.tar.gz版本 //linux表示在linux系統中效驗過的程式。二進位制10.2.35版本配置教程地址:https://mariadb.com/kb/en/installing-mariadb-binary-tarballs/注:原始碼只帶版本號,不會帶linux或者window提示,包比較小,只有69.9MB左右,而二進位制檔案,是在linux或者window上編譯好了的,會帶有一些提示資訊。
二、安裝二進位制程式mariadb:1、檢查系統環境:
//1、確保當前系統沒有安裝相同的軟體包;
[root@localhost ~]# rpm -q mariadb-server
package mariadb-server is not installed
[root@localhost ~]# rpm -q mysql-server
package mysql-server is not installed
//檢視當前3306埠是空閒的
[root@localhost ~]# ss -ntl
2、二進位制包安裝準備教程:2、配置環境變數://1、準備使用者: [root@localhost ~]# useradd -r -d /data/mysqldb -s /sbin/nologin mysql // -r:普通的系統使用者, // -d:指定家目錄,(建議使用邏輯卷;便於擴充套件) // /data/mysqldb這個資料夾預設是沒有的,執行上面也不會建立,加上-m強行去建立,當前不去強制,後期改 // -s /sbin/nologin shell型別, [root@localhost ~]# getent passwd mysql mysql:x:996:994::/data/mysqldb:/sbin/nologin [root@localhost ~]# id mysql //主組建立好了 uid=996(mysql) gid=994(mysql) groups=994(mysql) //2、指定存放資料庫程式目錄路徑, [root@localhost ~]# tar -zxvf mariadb-10.2.35-linux-x86_64.tar.gz -C /usr/local/ //-C表示指定檔案的路徑;解壓完是mariadb-10.2.35-linux-x86_64, 編譯時使用的mysql目錄,建立軟連線或者更改目錄名稱,此刻會建立存放資料庫程式的第一個資料夾 //3、建立軟連線 [root@localhost local]# ln -s mariadb-10.2.35-linux-x86_64/ mysql //因為編譯的時候使用的是mysql這個資料夾,建議建立軟連線;也是可以的 [root@localhost local]# ll lrwxrwxrwx 1 root root 29 Nov 6 17:11 mysql -> mariadb-10.2.35-linux-x86_64/ //更改檔案的所有者(不強制更改) [root@localhost local]# ll mysql/ //檢視資料夾發現檔案的所有者都是1000, total 176 drwxrwxr-x 2 1000 1000 4096 Oct 23 01:55 bin [root@localhost local]# chown -R root mysql/ //只改檔案的所有者,所屬組不會發生變化; [root@localhost local]# ll mysql/ drwxrwxr-x 2 root 1000 4096 Oct 23 01:55 bin [root@localhost local]# chown -R root: mysql/ //root:加上冒號表示所屬組也更改, 或者root:root也是同理 [root@localhost local]# ll mysql/ drwxrwxr-x 2 root root 4096 Oct 23 01:55 bin
3、建立資料存放目錄,若是生產資料,建議使用邏輯卷(邏輯卷建立教程:知識點一)//4、配置環境變數: [root@localhost ~]# ls /usr/local/mysql/bin/ //資料庫的二進位制檔案 aria_chk mbstream mysqladmin //放到PATH變數裡面 [root@localhost local]# echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh //把mysql的二進位制檔案放到PATh變數裡面 [root@localhost local]# . /etc/profile.d/mysql.sh //使變數生效 [root@localhost local]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
//5、建立存放生產資料目錄mysqldb(在/data下掛載邏輯卷後建立mysqldb)
[root@localhost ~]# df -h
/dev/mapper/vg0-lv_mysql 62879748 32992 62846756 1% /data
[root@localhost ~]# mkdir /data/mysqldb
[root@localhost ~]# chown mysql.mysql /data/mysqldb //把改資料夾所有者所屬組都更改為mysql
[root@localhost ~]# ll -d /data/mysqldb/
drwxr-xr-x 2 mysql mysql 6 Nov 6 17:57 /data/mysqldb/
[root@localhost ~]# chmod 770 /data/mysqldb/ //更改檔案的許可權,其他人不可以訪問該資料夾
[root@localhost ~]# ll -d /data/mysqldb/
drwxrwx--- 2 mysql mysql 6 Nov 6 17:57 /data/mysqldb/
4、檢查程式所需要的兩個資料夾:[root@localhost ~]# ll /usr/local/mysql/ -d //資料庫程式存放的位置
drwxrwxr-x 12 root root 282 Nov 3 02:30 /usr/local/mysql/
[root@localhost ~]# ll /data/mysqldb/ -d //收集使用者資料的,生產資料存放位置
drwxrwx--- 2 mysql mysql 6 Nov 6 17:57 /data/mysqldb/
5、生成mysql資料庫檔案:呼叫指令碼(進入到二進位制程式所在的資料夾裡面);只是指定生成資料庫檔案。//6、生成資料庫資料檔案
[root@localhost ~]# cd /usr/local/mysql/ //進入到二進位制程式資料夾
[root@localhost mysql]# ls scripts/ //生成資料庫檔案呼叫指令碼,該指令碼在scripts目錄之下。
mysql_install_db
[root@localhost scripts]# ./mysql_install_db --datadir=/data/mysqldb --user=mysql
//--datadir 指定生成的資料庫存放位置
FATAL ERROR: Could not find ./bin/my_print_defaults
//安裝資料庫;在scripty下執行會報錯;
//因為該mysql_install_db指令碼會呼叫一些檔案mysql目錄下的一些檔案,只能切回上一級目錄
[root@localhost mysql]# scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
//執行該指令碼,出現ok說明呼叫指令碼成功,生成資料庫成功
Installing MariaDB/MySQL system tables in '/data/mysqldb' ...
OK
[root@localhost mysql]# ll /data/mysqldb/ //可以在我們準備的收集使用者資料的目錄下看到檔案
total 110620
-rw-rw---- 1 mysql mysql 16384 Nov 6 18:13 aria_log.00000001
6、配置啟動程式指令碼:修改二進位制檔案,告訴二進位制檔案啟動指令碼啟動程式在什麼位置(知識點二、知識點三);//7、修改啟動程式二進位制檔案
[root@localhost mysql]# ls support-files/
//這個目錄下配置檔案,作為我們mysql資料庫的配置檔案,提供了好幾款的配置檔案,
binary-configure
my-huge.cnf //超級大的環境用該程式(針對記憶體來說的)
my-large.cnf //大環境用該程式(針對記憶體來說的)
my-small.cnf //小環境用該程式檔案 (針對記憶體來說的)
my-innodb-heavy-4G.cnf //內測4個G的用該程式(針對記憶體來說的)
my-medium.cnf //中小型環境用該程式(針對記憶體來說的)
[root@localhost mysql]# cat support-files/mysql-log-rotate //檔案裡會有簡單的說明
# This logname can be set in /etc/my.cnf
# by setting the variable "log-error"
[root@localhost ~]# cp /etc/my.cnf{,.bak} //備份我們之前的配置檔案 shell語句備份範例
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
//我們配置huge.cnf環境程式,覆蓋到my.cnf我們的配置檔案
cp: overwrite ‘/etc/my.cnf’?y //表示同意覆蓋
//編輯啟動程式配置檔案
[root@localhost mysql]# vim /etc/my.cnf //修改我們的配置檔案
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
datadir = /data/mysqldb //新增生產資料儲存位置
socket = /tmp/mysql.sock //使用mysql.sock預設檔案位置
6.1、配置資料庫啟動指令碼://8、設定開機自啟動
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
//把啟動指令碼cp到/etc/init.d/並改名稱為mysqld
[root@localhost mysql]# ll /etc/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld //預設情況下沒有設定開機自啟動;新增到開機自啟動中
[root@localhost mysql]# chkconfig --list
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# systemctl start mysql.service
//9、MySQL資料庫安全設定:
[root@localhost ~]# mysql_secure_installation
//10、登入mysql資料庫
[root@localhost ~]# mysql -uroot -p123456
Server version: 10.2.35
MariaDB [(none)]> status
UNIX socket: /tmp/mysql.sock
知識點一:1、在虛擬機器下新增一塊空磁碟並建立邏輯卷(用來作為mysql資料庫存放生產資料的目錄)
//1、在虛擬機器下新增新磁碟;註冊新新增的磁碟:
[root@localhost ~]# echo '- - -' > /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsblk
sdb 8:48 0 10G 0 disk
//2、建立邏輯卷(建立PV)
[root@localhost ~]# pvcreate /dev/sdb //sdb建立為物理卷pv
Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvdisplay
"/dev/sdb" is a new physical volume of "60.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
//3、把這塊盤新增到卷組裡面vg(建立vg)(新增到lv)
[root@localhost ~]# vgcreate vg0 /dev/sdb
Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -n lv_mysql -l 100%FREE vg0
//建立邏輯卷,-n:為該邏輯卷命名為lv_mysql, -l:指定大小,100%GREE:全部使用
[root@localhost ~]# lvs //可以檢視到該邏輯卷的大小
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_mysql vg0 -wi-a----- <60.00g
//4、建立檔案系統:
[root@localhost ~]# mkfs.xfs /dev/vg0/lv_mysql //將該邏輯卷格式化為.xfs檔案系統
[root@localhost ~]# blkid //對檔案系統型別查詢
/dev/mapper/vg0-lv_mysql: UUID="9f2bca6b-5748-497a-b6ea-4194b8dcd237" TYPE="xfs"
//5、把建立好的邏輯卷掛載到一個目錄之下(掛載)
[root@localhost ~]# getent passwd mysql //檢視mysql資料存放目錄位置
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[root@localhost ~]# mkdir /data/
[root@localhost ~]# vim /etc/fstab //掛在的話還是需要寫到磁盤裡面,配置
UUID=9f2bca6b-5748-497a-b6ea-4194b8dcd237 /data/ xfs defaults 0 0
//在vim下直接查詢 :r!blkid /dev/vg0/lv_mysql 該語句直接查詢它的UID
[root@localhost ~]# mount -a //掛載
[root@localhost ~]# df -h
/dev/mapper/vg0-lv_mysql 62879748 32992 62846756 1% /data
//6、建立生產資料存放目錄mysqdb
[root@localhost ~]# mkdir /data/mysqldb
知識點二:2、配置啟動程式指令碼:修改二進位制檔案,發現mysql程式目錄沒有讀寫許可權 //1、我們配置huge.cnf環境程式,覆蓋到my.cnf我們的配置檔案
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’?y //表示同意覆蓋
//2、編輯啟動程式配置檔案
[root@localhost mysql]# vim /etc/my.cnf //修改我們的配置檔案
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
// 配置在此位置,mysql目錄沒有給mysql使用者授予讀寫許可權,需要給mysql目錄授予msql使用者讀寫許可權。
// 或者也可以給它一個MySQL使用者可以寫的許可權的位置(預設位置為/tmp/mysql)
[mysqld]
port = 3306
datadir = /data/mysqldb //新增生產資料儲存位置
socket = /usr/local/mysql/mysql.sock //更改mysql.sock檔案位置
//3、啟動時會報錯:
#問題現象:
[root@localhost ~]# systemctl start mysql.service
'/data/mysqldb/localhost.localdomain.err' //錯誤日誌地址
#處理思路:
[root@localhost ~]# cat /data/mysqldb/localhost.localdomain.err
[ERROR] Can't start server : Bind on unix socket: Permission denied //許可權拒絕
[ERROR] Do you already have another mysqld server running on socket:
/usr/local/mysql/mysql.sock ? //沒有找到mysql.sock檔案
[root@localhost ~]# ss -tunlp //查詢到3306埠未開啟,沒有程式監聽,
[root@localhost ~]# ll /usr/local/mysql/ -d
//檢視到/usr/local/mysql/資料夾沒有給mysql授予讀寫許可權
drwxrwxr-x 12 root root 282 Nov 3 02:30 /usr/local/mysql/
#解決方案:
[root@localhost mysql]# setfacl -R -m u:mysql:rwx /usr/local/mysql/
// -R:對任何資料都有寫許可權; u:mysql:rwx :針對使用者mysql有讀寫執行許可權;
[root@localhost mysql]# ll /usr/local/mysql/ -d
drwxrwxr-x+ 12 root root 4096 Nov 3 02:30 /usr/local/mysql/
// x+ 可以看到給mysql目錄授予了X+許可權
[root@localhost mysql]# systemctl start mysqld.service //現在可以正常啟動了
[root@localhost ~]# ss -tunlp //此時可以看到3306埠了
tcp LISTEN 0 80 [::]:3306 users:(("mysqld",pid=118467,fd=21))
知識點三:3、配置啟動程式指令碼:修改二進位制檔案,發現安全指令碼找不到/tmp.my.sock檔案位置
//1、我們配置huge.cnf環境程式,覆蓋到my.cnf我們的配置檔案
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’?y //表示同意覆蓋
//2、編輯啟動程式配置檔案
[root@localhost mysql]# vim /etc/my.cnf //修改我們的配置檔案
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
//在配置安全指令碼mysql_secure_installation時,預設是/tmp/mysql.sock下;
//更改目錄地址後相對應的也需要更改mysql_secure_installation指令碼配置資訊。
[mysqld]
port = 3306
datadir = /data/mysqldb //新增生產資料儲存位置
socket = /usr/local/mysql/mysql.sock //更改mysql.sock檔案位置
//3、執行安全指令碼時報錯:
#問題現象:
[root@localhost ~]# mysql_secure_installation //執行邊安全指令碼
MySQL server through socket '/tmp/mysql.sock'
//使用/tmp/mysql.sock檔案,我們之前配置是在/usr/local/mysql/mysql.sock
#解決思路:
[root@localhost ~]# less /usr/local/mysql/bin/mysql_secure_installation
//檢視該指令碼是不是定義了路徑
#解決方案:
[root@localhost ~]# vim /etc/my.cnf //更改mysql.sock檔案路徑
socket = /tmp/mysql.sock
socket = /tmp/mysql.sock
[root@localhost my.cnf.d]# /usr/local/mysql/bin/mysqld --print-defaults
//可以檢視到他當時編譯時指定的路徑
/usr/local/mysql/bin/mysqld would have been started with the following arguments:
--port=3306 --datadir=/data/mysqldb --socket=/tmp/mysql.sock --skip-external-locking
--key_buffer_size=384M --max_allowed_packet=1M --table_open_cache=512
--sort_buffer_size=2M --read_buffer_size=2M --read_rnd_buffer_size=8M
--myisam_sort_buffer_size=64M --thread_cache_size=8 --query_cache_size=32M
--thread_concurrency=8 --log-bin=mysql-bin --server-id=1
[root@localhost ~]# mysql_secure_installation //此刻就可以正常執行了
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)