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 5.7 Reference Manual》、《MySQL Source-Configuration Options》