MySQL數據庫第一部分之簡介和安裝

mysql數據庫的安裝方式:源碼安裝;二進制安裝;yum安裝:

MySQL數據庫

數據庫管理系統的優點 :

相互關聯的數據的集合 ?

較少的數據冗余 ?

程序與數據相互獨立 ?

保證數據的安全、可靠 ?

最大限度地保證數據的正確性 ?

數據可以并發使用并能同時保證一致性

 

數據庫管理系統的基本功能

數據定義 ?

數據處理 ?

數據安全 ?

數據備份

數據庫系統的架構 ;

單機架構 ?

大型主機/終端架構 ?

主從式架構(C/S) ?

分布式架構

事務transaction:多個操作被當作一個整體對待

A: 原子性

C:一致性

I: 隔離性

D:持久性

MariaDB的特性;

插件式存儲引擎

單進程,多線程 ?

諸多擴展和新特性 ?

提供了較多測試組件 ?

開源

安裝Mariadb :(端口系統默認為3306)

centos7系統上默認用的是mariadb,centos6系統上用的是mysql,他們之間本質上是沒有區別的。

Mariadb安裝方式

檢查環境
iptables
selinux
mariadb-server (查看系統上是否已經安裝過mariadb包了)

1、源代碼:編譯安裝

捕獲

1 . 下載源碼;上圖的官網里下載:https://downloads.mariadb.org/mariadb/10.2.15/

2 . 安裝編譯所需要的的包:

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssldevel ncurses-devel libxml2-devel

3 . useradd -r -s /sbin/nologin mysql? (創建用戶)

4 . 將源碼解壓縮:tar xvf mariadb-10.2.15.tar.gz

5 .?mkdir -pv /data/mysqldb ? ? ? ? ?chown mysql.mysql /data/mysqldb ?? (創建數據庫的目錄,并指定其所有者和所有組)

6 . 將解壓縮的源碼進行編譯:

cd mariadb-10.2.15/(要先進入到源碼解壓縮后的文件夾下)

cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \? (程序安裝路徑)
-DMYSQL_DATADIR=/data/mysqldb/ \ ? ?? (庫文件存放路徑)
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

(執行此命令一定要按照上述格式來執行)

7 . make – j? 4? &&? make? install ? ? (開始編譯安裝)

8 .準備環境變量

echo ‘PATH=/app/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh? (將編譯的二進制程序目錄添加到PATH變量里去)

. /etc/profile.d/mysql.sh (讓PATH變量生效)

9 . 生成數據庫文件

cd /app/mysql/? (進到此目錄下)

scripts/mysql_install_db –datadir=/data/mysqldb/ –user=mysql

(執行此腳本,此腳本為生成數據庫的配置文件)

10 .?準備配置文件

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

修改/etc/my.cnf的配置文件:

datadir = /data/mysqldb ? ? (添加此行指定其數據庫目錄的路徑)

11 . 準備啟動腳本

cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

(將編譯好的二進制啟動腳本復制到init.d的啟動管理去。)

setfacl -R -m u:mysql:rwx /app/mysql/? (對mysql用戶增加對/app/mysql/目錄的讀寫執行的權限)

12 . 啟動服務

chkconfig –add mysqld ?? (將mysqld加入到開機啟動項里)

chkconfig? –list ? ? ? ? (查看啟動列表項)

service mysqld start

 

?

2、二進制格式的程序包:展開至特定路徑,并經過簡單配置后即可使用

1.? 下載二進制包:

https://downloads.mariadb.org/mariadb/10.2.15/ (在此官網就可以下載)

二進制包:mariadb-10.2.15-linux-x86_64.tar (帶有linux而且在400M以上)

 

捕獲1

2 . 新建用戶?

創建數據庫的用戶賬號:useradd -r -d /app/mysql? -s /sbin/nologin mysql

3 .? 解壓縮:

tar -xvf mariadb-10.2.15-linux-x86_64.tar.gz ? -C /usr/local(此解壓路徑是根據它源碼編譯時指定的路徑,可以到官網上查到)

4 . 進入到cd /usr/local目錄下指定軟連接:ln -s mariadb-10.2.15-linux-x86_64/ mysql 指定好了之后。后面的操作就可以使用mysql,而不是要寫mariadb-10.2.15-linux-x86_64/一長串了。

5 . 進入到mysql目錄下發現所有文件的賬號都是500,所以要將其用戶賬號更改為root所有

回到? /usr/local目錄下更改mysql目錄及目錄下的文件的所有者所屬組:chown -R root: mysql/

在此文件夾下/usr/local/mysql/bin/有許多要執行的文件,需要將其加入到$PATH變量里 ,以后執行不必在寫絕對路徑了。

echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh? (加入$PATH變量里)

. /etc/profile.d/mysql.sh ?? (讓文件生效)

6. 指定以后數據庫存放的路徑:

因為數據庫需要大的存儲空間,可以考慮使用邏輯卷來管理,如果存儲空間不夠的話還可以重新在擴容。

新加一塊虛擬硬盤:同步硬盤:echo ‘- – -‘ > /sys/class/scsi_host/host2/scan

新加的硬盤不用分區,直接創建邏輯卷就可以了。

pvcreate /dev/sdb ?? (變成物理卷)

vgcreate vg0 /dev/sdb? (創建卷組vg0)

lvcreate -n lv_mysql -l 100%FREE vg0(創建邏輯卷lv_mysql,并將卷組的空間全部用完)

mkfs.xfs ? /dev/vg0/lv_mysql ?? (創建文件系統)

創建文件夾(此文件夾為,剛才創建用戶時指定的家目錄)mkdir? /app/

并掛載到剛剛創建的邏輯卷里:(寫到磁盤里面)

vim /etc/fstab

UUID=2e6b78f8-fefa-451b-aa5f-aa4199367f08 /app/ xfs defaults 0 0

mount? -a? (讓掛載生效)

mkdir /app/mysqldb? (將文件夾建立起來)

chown mysql.mysql /app/mysqldb ? (將文件夾的所有者和所屬組都改為mysql)

7 . 生成數據庫的必要配置文件

執行一個腳本就可以了,此腳本在mysql的程序文件夾下/usr/local/mysql/scripts

scripts/mysql_install_db –datadir=/app/mysqldb –user=mysql(執行此腳本。并指定生成的配置文件存放的路徑為剛剛創建的數據庫的路徑)? 有0k代表執行成功了。

執行此腳本必須要在/usr/local/mysql? 此目錄下因為此腳本有依賴。

8 . 修改配置文件,告訴數據庫存放的路徑:

/usr/local/mysql/support-files/my-huge.cnf? (大環境下使用,但只有2G)

cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf? (將二進制程序里的模板文件復制到mysql的配置文件下修改)

vim? /etc/my.cnf

捕獲123

9 . 啟動服務:(將二進制程序里的啟動腳本復制出來,到init.d里使其變成服務腳本)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig –add mysqld(將服務腳本加到啟動程序里)

可以通過chkconfig? –list ? 來查看是否添加到啟動程序里了。

手動開啟服務即可:service mysqld start? (如果起不來直接啟程序;./mysqld ? start )

3、程序包管理器管理的程序包安裝。

1 . 本身光盤里有mariadb的rpm包,只需用yum 安裝一下就可以了:

此包為系統自帶的版本,版本較低

yum? install? mariadb-server? (服務端)裝好后連客戶端一起安裝了(yum install mariadb)

systemctl? start mariadb ? (啟動服務)

systemctl? stop? mariadb ? (暫停服務)

mysql? (進入數據庫) ? ? ?? quit/exit? (退出數據庫)

2. 到官網安裝:(已配好了的yum源復制過來建個倉庫就可以了)

可以安裝最新的版本。

https://downloads.mariadb.org/mariadb/repositories/ ? (官網地址)

捕獲千萬人

 

將yum源復制到自己所配的倉庫里,然后安裝就可以了.

yum? install? MariaDB ? (注意大小寫就可以了,查看外網是否通)

安裝完啟動服務就可以了:systemctl ? start ? mariadb

在系統里如果光盤里有mariadb的老版本和新的yum版本,會默認安裝最新的版本。

 

 

實驗:mysql(mariadb)多實例安裝: (既在一臺主機上安裝多個數據庫)

由于mysql使用的都是默認的3306端口,所以在安裝多個數據庫時要將其端口修改一下。

1 . 首先yum 安裝一個mariadb ;yum install mariadb

2 . 創建目錄來存放三個實例:

mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv? (創建每個實例所需的文件夾)

目錄結構:

/mysql/
├── 3306
│?? ├── data
│?? ├── etc
│?? ├── log
│?? ├── pid
│?? └── socket
├── 3307
│?? ├── data
│?? ├── etc
│?? ├── log
│?? ├── pid
│?? └── socket
└── 3308
├── data ? (此目錄是存放數據庫文件)
├── etc ? ?? (存放配置文件的)
├── log ? ? ?? (存放日志文件的)
├── pid
└── socket ?? (存放socket文件的)

3 .? 由于yum已經安裝了mariadb ,所以mysql用戶已經建立了。

chown -R mysql.mysql /mysqldb/ ? (將剛才創建的文件夾的所有者和所屬組都設為mysql)

4 .創建數據庫的配置文件:
mysql_install_db –datadir=/mysqldb/3306/data –user=mysql ? ? ? (創建3306的)

mysql_install_db –datadir=/mysqldb/3307/data –user=mysql ? ? ? ? ?? (創建3307的)

mysql_install_db –datadir=/mysqldb/3308/data –user=mysql ? ? ? ? ? ? (創建3308的)

如果是二進制安裝或編譯安裝: 需要在后面添加 –basedir= xxxx

xxx需要在連接mysql 后輸入show variables like ‘%basedir%’;? 來查看路徑。

如果是二進制安裝或者編譯安裝,執行此條命令要進入到mysql_install_db此腳本的上級目錄,如何查找他的路徑請看上面兩種安裝時此腳本呢的具體路徑。

5 .? 創建/etc /的配置文件;默認路徑在/etc/my.cnf

cp /etc/my.cnf /mysqldb/3306/etc/

cp /etc/my.cnf /mysqldb/3307/etc/

cp /etc/my.cnf /mysqldb/3308/etc/

然后修改配置文件:

vim ? /mysqldb/3306/etc/my.cnf

vim /mysqldb/3307/etc/my.cnf

vim ? /mysqldb/3308/etc/my.cnf

然后將每個文件都 按下圖來修改:

捕獲

6 .?cp mysqld /mysqldb/3306/(將事先準備好的腳本復制到各個目錄下)

cp mysqld /mysqldb/3306/

cp mysqld /mysqldb/3307/

cp mysqld /mysqldb/3308/

然后將復制過去的腳本文件修改一下對應的端口號就可以了。(如果是編譯安裝或者是二進制安裝,此腳本還要將目錄更改一下cmd_path=”/app/mysql/bin”? 此地址為自己編譯安裝時的bin的地址)

7 . 將系統已有的服務暫停;

systemctl stop mariadb

給各個腳本添加執行權限:

chmod 700 /mysqldb/3306/mysqld

chmod 700 /mysqldb/3307/mysqld

chmod 700 /mysqldb/3308/mysqld

最后走一遍啟動腳本:

/mysqldb/3306/mysqld start ?? (stop 為停止)

/mysqldb/3307/mysqld start

/mysqldb/3308/mysqld start

服務啟動之后;連接實例;由于實例的socket文件不在默認的路徑,所以直接mysql無法連接實例

只有這樣:mysql -S /mysqldb/3308/socket/mysql.sock? (連接)

多實例中的兩個重要的配置文件要改對:/mysqldb/3306/mysqld此腳本文件和/mysqldb/3306/etc/my.cnf)

 

安全加固腳本:

mysiql服務安裝好后,由于沒有設置密碼,需要跑一個腳本來設定密碼。

nmysql_secure_installation? (開啟服務之后運行此腳本)

是否設置root口令 y
是否刪除匿名用戶 y
是否允許root遠程登錄 運行此腳本,交互式

是否刪除test數據庫 y
privilege tables y

 

 

以下為mysqld的腳本詳細。

#!/bin/bash

port=3307
mysql_user=”root”
mysql_pwd=””
cmd_path=”/usr/bin”
mysql_basedir=”/mysqldb”
mysql_sock=”${mysql_basedir}/${port}/socket/mysql.sock”

function_start_mysql()
{
if [ ! -e “$mysql_sock” ];then
printf “Starting MySQL…\n”
else
printf “MySQL is running…\n”
exit
fi
}

function_stop_mysql()
{
if [ ! -e “$mysql_sock” ];then
if [ ! -e “$mysql_sock” ];then
printf “Starting MySQL…\n”
${cmd_path}/mysqld_safe –defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf “MySQL is running…\n”
exit
fi
}

function_stop_mysql()
{
if [ ! -e “$mysql_sock” ];then
printf “MySQL is stopped…\n”
exit
else
printf “Stoping MySQL…\n”
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}

function_restart_mysql()
{
printf “Restarting MySQL…\n”
function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf “Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n”
esac

 

二進制自動安裝腳本:

捕獲

此腳本里有讓環境變量生效的. /etc/profile.d/mysql.sh 如果只是普通的執行腳本的話此環境變量只在腳本里生效,當腳本執行完了退出后之后此文件并不能生效。所以在執行腳本時用source mariadb.sh執行后就會在全局生效了。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100334

(1)
無所謂無所謂
上一篇 2018-06-04
下一篇 2018-06-05

相關推薦

評論列表(1條)

  • 單爆手
    單爆手 2018-06-06 12:47

    將事先準備好的腳本復制到各個目錄下?請問是哪個腳本,沒寫明,

欧美性久久久久