MySQL數據庫安裝實踐 Part 1:單實例部署

       

1 MySQL的安裝方法介紹

        當今的互聯網企業中,MySQL數據庫大多運行在linux系列操作系統。若應用場景不同、版本不同,MySQL數據庫的安裝方法也會有區別,下面把常見的幾種方法介紹給朋友們

1.1 yum、rpm方式安裝

        MySQL官網提供了不同版本的rpm安裝包,且針對不同操作系統平臺的安裝包也會有區別。

1.1.1 rpm包安裝MySQL

        rpm包的安裝方式相對簡單,首先下載安裝包

--- rpm包list

mysql-commercial-server-5.7.25-1.1.el7.x86_64.rpm
mysql-commercial-common-5.7.25-1.1.el7.x86_64.rpm
mysql-commercial-devel-5.7.25-1.1.el7.x86_64.rpm
mysql-commercial-libs-5.7.25-1.1.el7.x86_64.rpm
mysql-commercial-libs-compat-5.7.25-1.1.el7.x86_64.rpm
mysql-commercial-client-5.7.25-1.1.el7.x86_64.rpm


--- 查看系統中的rpm包

rpm -qa | grep mysql

--- 刪除系統中的rpm包

rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps

--- 安裝rpm包

rpm -ivh MySQL-*.rpm --force

1.1.2 yum安裝MySQL

        yum方式安裝MySQL最便捷,只需執行一條命令'yum install mysql-server -y'即可。

yum install mysql-server -y

1.2 常規編譯安裝MySQL

        常規編譯安裝即"./configure、make、make install",適合所有MySQL 5.2.xx及以前產品

--- 安裝環境依賴包

yum install bc binutils compat-libcap1 compat-libstdc++-33 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender-devel libXrender libgcc libstdc++  libstdc++-devel libxcb make nfs-utils net-tools python python-configshell8 python-rtslib python-six  smartmontools sysstat targetcli libgcc_s.so.1 libc.so.6


--- 解壓軟件包

tar -zxvf mysql-5.1.73.tar.gz

--- 進入軟件目錄

cd mysql-5.1.73

---配置&編譯&安裝

./configure \
--prefix=/app/mysql5.1 \
--with-unix-scoket-path=/app/mysql5.1/tmp/mysql.sock \
--localstatedir=/app/mysql5.1/data \
--enable-assembler \
--enable-thread-safe-client \
--with-mysqld-user=mysql \
--with-big-tables \
--without-debug \
--with-pthread \
--with-extra-charsets=complex \
--with-readline \
--with-ssl \
--with-embedded-server \
--enable-local-infile \
--with-plugins=partition,innobase \
--with-msqld-ldflags=-all-static \
--with-client-ldflags=-all-static 

make

make install

ln -s /app/mysql5.1 /app/mysql

1.3 cmake編譯安裝MySQL

        MySQL 5.4.xx及後續版本的特殊性,採用cmake或gmake編譯安裝。

--- 安裝環境依賴包

yum install bc binutils compat-libcap1 compat-libstdc++-33 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender-devel libXrender libgcc libstdc++  libstdc++-devel libxcb make nfs-utils net-tools python python-configshell8 python-rtslib python-six  smartmontools sysstat targetcli libgcc_s.so.1 libc.so.6


--- 解壓軟件包

tar -zxvf mysql-5.7.24.tar.gz

--- 進軟件目錄

cd mysql5.7

--- 配置&編譯&安裝

cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql5.7 \
-DMYSQL_DATADIR=/app/mysql5.7/data \
-DMYSQL_UNIX_ADDR=/app/mysql5.7/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

make

make install

ln -s /app/mysql5.6 /app/mysql

注:需安裝cmake等編譯工具

1.4 二進制免編譯安裝MySQL

        二進制方式免編譯安裝的方法和yum安裝類似,適合各類MySQL產品,無需複雜編譯配置及編譯時間的等待,解壓軟件包後初始化數據庫即可完成並啓動。

2 安裝配置MySQL數據庫

2.1 安裝Mysql軟件 

2.1.1 依賴包和編譯軟件

        Linux環境情況如下

--- 查看linux版本

cat /etc/redhat-release

--- 查看內核版本

uname -r

--- 查看操作系統位數

uname -m

2.1.1.1 安裝依賴包

        MySQL需要的依賴包,需提前安裝

rpm -qa | grep ncurses libaio

yum install ncurses-devel libaio-devel -y

2.1.1.2 安裝編譯軟件

        MySQL 5.5 及以上版本採用特殊的編譯方法,需要安裝編譯工具cmake

rpm -qa | grep cmake

yum install cmake -y

yum install bc binutils compat-libcap1 compat-libstdc++-33 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender-devel libXrender libgcc libstdc++  libstdc++-devel libxcb make nfs-utils net-tools python python-configshell8 python-rtslib python-six  smartmontools sysstat targetcli libgcc_s.so.1 libc.so.6 gcc gcc-c++

2.1.2 安裝MySQL軟件

        此次實例採用相對複雜的源代碼安裝方式

2.1.2.1 創建MySQL賬號

useradd -s /sbin/nologin -M mysql

id mysql

2.1.2.2 獲取MySQL軟件包

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

        MySQL 源碼包:mysql-5.7.24.tar.gz

2.1.2.3 編譯&安裝MySQL

        配置、編譯安裝步驟如下:

        1. 下載mysql軟件包 

mkdir -p /opt/media

cd /opt/media

wget -q https://downloads.mysql.com/archives/get/file/mysql-5.7.24.tar.gz

ls -rtlh

        2. 解壓、配置mysql

tar -zxvf mysql-5.7.24.tar.gz -C /opt/media

cd /opt/media/mysql-5.7.24

cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql5.7 \
-DMYSQL_DATADIR=/app/mysql5.7/data \
-DMYSQL_UNIX_ADDR=/app/mysql5.7/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_BOOST=/usr/local/boost \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

        3. 編譯、安裝mysql

--- 編譯,啓用4核並行編譯

make -j 4

make install

        4. 配置安裝目錄的軟連接

ln -s /app/mysql5.7 /app/mysql

ls -lrth /app

ls /app/mysql

        完成上述步驟,mysql軟件安裝完成

2.2 創建MySQL數據庫配置文件、目錄授權

        MySQL 5.5 及以前版本默認提供多個配置文件模板,MySQL 5.6的support-files目錄中沒有提供模板

--- 查看模板信息

ls -rtlh /app/mysql5.7/support-files/*.cnf

ls -rtlh /app/mysql/support-files/*

--- 備份配置文件

mv /etc/my.cnf /etc/cnf.bak

--- 生成新配置文件(5.7版本沒有my-default.cnf)

cp /app/mysql5.6/support-files/my-default.cnf /etc/my.cnf

--- 配置my.cnf

vi /etc/my.cnf

[mysqld]

basedir=/app/mysql5.7
datadir=/app/mysql5.7/data
socket=/app/mysql5.7/tmp/mysql.sock
port=3306
plugin_dir=/app/mysql5.7/lib/plugin
log-error=/app/mysql5.7/logs/error.log

skip-name-resolve
server-id = 10
default-storage-engine = innodb
innodb_buffer_pool_size = 512M
character_set_server = utf8
relay-log-space-limit = 2048M


max-connections = 320
query_cache_limit = 4M
query_cache_size = 64M
query_cache_type = 1
wait_timeout = 9000
connect_timeout = 20
thread_cache_size = 256
key_buffer_size = 16M

join_buffer_size = 2M
max_heap_table_size = 16M
low_priority_updates = 1
max_seeks_for_key = 100
sort_buffer_size = 16M
read_buffer_size = 16M
max_connect_errors = 10
myisam_sort_buffer_size = 64M
tmp_table_size = 64M
read_rnd_buffer_size = 1M




--- 軟件目錄授權

chown -R mysql.mysql /app/mysql

2.3 初始化MySQL數據庫文件

2.3.1 初始化

--- MySQL 5.6及以前版本

/app/mysql/bin/mysql_install_db --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql

--- MySQL 5.7版本

/app/mysql/bin/mysqld --no-defaults --initialize --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql

2.3.2 初始化原理、結果說明

        初始化是創建基礎的庫文件,例如,生成mysql庫表等。初始化後查看數據目錄

ls -rlth /app/mysql/data

yum install tree -y

tree /app/mysql/data

2.3.3 MySQL初始化故障排錯

        初始化出現的故障都必須排除,必須出現兩個yes字樣,否則後面數據庫服務可以啓動,也會出現登錄不了MySQL數據庫等各種問題。 

2.4 配置並啓動MySQL數據庫 

2.4.1 配置啓動腳本

--- 複製啓動腳本至啓動目錄

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

chmod 700 /etc/init.d/mysqld

ls -l /etc/init.d/mysqld

2.4.2 啓動MySQL數據庫

--- 啓動MySQL數據庫方法1

/etc/init.d/mysqld start

--- 停止MySQL數據庫

/etc/init.d/mysqld stop

--- 啓動MySQL數據庫方法2

/app/mysql/bin/mysqld_safe --user=mysql &

# “&”表示後臺運行mysql服務

注:MySQL啓動報錯:mysqld_safe directory '/app/mysql/tmp' for UNIX socket file don't exists.需創建tmp目錄

解決方案

--- 創建tmp目錄

mkdir -p /app/mysql/tmp

chown -R mysql.mysql /app/mysql/tmp

2.4.3 檢查mysql端口狀態

netstat -lntup | grep mysql

2.4.4 查看mysql啓動日誌

tail -500f /app/mysql/data/ocean.err

2.4.5 配置MySQL開機自啓動

--- 方案一

chkconfig --add mysqld

chkconfig --list | grep mysqld

--- 方案二

vi /etc/rc.local

/etc/init.d/mysqld start

2.5 MySQL命令添加到全局路徑

        之前配置啓動和停止mysql都使用的絕對路徑‘/app/mysql/bin/mysql’,很繁瑣。添加全局路徑後可直接敲mysql。下面來看看配置方法

2.5.1 確認mysql路徑

ls /app/mysql/bin/mysql

2.5.2 PATH變量中加入mysql路徑

--- profile中添加mysql路徑

echo 'export PATH=/app/mysql/bin:$PATH' >> /etc/profile

--- 查看profile配置

tail -l /etc/profile

--- 生效變更的配置

source /etc/profile

--- 查看PATH

echo $PATH

2.5.3 軟連接方式

--- mysql所有命令軟連接到全局路徑下

ln -s /app/mysql/bin/* /usr/local/sbin

2.6 登錄mysql,驗證服務狀態

--- 使用臨時密碼登錄

mysql -uroot -p'eFhu7agc5A%W'

--- 首次登錄後需更改密碼才能查詢數據

ALTER USER USER() IDENTIFIED BY 'root1234';

查看數據庫配置

--- 查看當前數據庫

show databases;

--- 查看當前用戶

select user();

--- 退出

ctrl + d

quit

exit

2.7 MySQL 安全配置

2.7.1 root配置密碼

        MySQL管理員root密碼默認爲空,通過mysqladmin配置密碼

--- root用戶配置密碼

mysqladmin -u root password 'ocean123'

--- 登錄驗證

mysql -uroot -p 

鍵入 ocean123

--- 交互模式配置密碼

mysql_secure_installation

2.7.2 清理mysql無用賬戶

--- 查看用戶信息

select user,host from mysql.user;

--- 刪除無用賬戶

drop user root@'::1';

drop user root@'node1';

drop user ''@'node1';

drop user ''@'localhost';

--- 驗證用戶信息

select user,host from mysql.user;

--- DML刪除無用賬戶

delete from mysql.user where user='' and host='MySQL';

flush privileges;

2.7.3 清理無用庫

--- 刪除無用庫

drop database test;

--- 查看庫信息

show databases;

FAQ

1. 系統最小化安裝,很多組件包沒有安裝

yum install bc binutils compat-libcap1 compat-libstdc++-33 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender-devel libXrender libgcc libstdc++  libstdc++-devel libxcb make nfs-utils net-tools python python-configshell8 python-rtslib python-six  smartmontools sysstat targetcli libgcc_s.so.1 libc.so.6 gcc gcc-c++

2. 高版本mysql需要boots庫的安裝纔可以正常運行

        cmake的報錯信息

CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

  This CMake script will look for boost in <directory>.  If it is not there,
  it will download and unpack it (in that directory) for you.

  If you are inside a firewall, you may need to use an http proxy:

  export http_proxy=http://example.com:80

Call Stack (most recent call first):
  cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
  CMakeLists.txt:507 (INCLUDE)

        下載boost包,創建目錄

mkdir -p /usr/local/boost

tar -zxvf boost_1_59_0.tar.gz -C /usr/local/boost

        cmake需要添加“-DWITH_BOOST=/usr/local/boost \

 3. 缺少bison組件包

        cmake報錯信息

CMake Warning at cmake/bison.cmake:20 (MESSAGE):
  Bison executable not found in PATH
Call Stack (most recent call first):
  sql/CMakeLists.txt:562 (INCLUDE)


CMake Warning at cmake/bison.cmake:20 (MESSAGE):
  Bison executable not found in PATH
Call Stack (most recent call first):
  libmysqld/CMakeLists.txt:194 (INCLUDE)

        yum install bison

 

相關鏈接:

MySQL數據庫分類與版本升級

MySQL數據庫安裝實踐 Part 2:多實例部署

參考 《MySQL 5.7 Reference Manual》、《MySQL Source-Configuration Options

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章