1. 程式人生 > >二進制安裝mariadb的奇妙經歷

二進制安裝mariadb的奇妙經歷

mariadb linux 二進制

二進制安裝mariadb的奇妙經歷

1. MariaDB介紹

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB的目的是完全兼容MySQL。基於事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎。雖然MariaDB被視為MySQL數據庫的替代品,但它在擴展功能、存儲引擎以及一些新的功能改進方面都強過MySQL。而且從MySQL遷移到MariaDB也是非常簡單的。

詳情點擊mariadb官方站點

2. 二進制安裝mariadb

下載二進制包:安裝包:mariadb-10.2.8

# wget https://downloads.mariadb.org/interstitial/mariadb-10.2.8/bintar-linux-x86_64/mariadb-10.2.8-linux-x86_64.tar.gz/from/http%3A//mirrors.tuna.tsinghua.edu.cn/mariadb/

解壓到/usr/local下

# tar -xvf index.html -C  /usr/local/

解壓後的相關目錄說明:

bin:            各種二進制都在此目錄下
data:           如果我們不創建新目錄的話,此目錄就是默認的數據目錄。所以權限必須是屬主和屬組都是mysql
docs:           相關 文檔include:        頭文件lib:            庫文件man:            幫助手冊
mysql-test:     mysql測試組件
scripts:        mysql初始化時要用到的腳本
share:          mysql的共享內容
sql-bench:      對mysql做壓力測試工具
support-files:  mysql正常運行的樣例性的配置文件或文檔

做一個軟連接。切換到mariadb目錄下。並參考一個安裝說明文檔

# ln -s /usr/local/mariadb-10.2.8-linux-x86_64/ /usr/local/mysql
# cd /usr/local/mysql/
# vim INSTALL-BINARY
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysqlshell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &

創建mysql用戶和組,並修改mariadb下的權限

# groupadd mysql
# useradd -r -s /sbin/nologin -g mysql mysql
# chown -R mysql.mysql .

初始化腳本。使用mysql_install_db初始化數據庫,使用--user定義數據庫名稱,--basedir定義軟件主目錄,--datadir定義數據庫的存放目錄,初始化完成後,將mysql的配置文件拷貝一份到my.cnf下。然後通過軟件包提供的啟動腳本mysql.server來管理服務進程並啟動。

# mkdir -p /data/
# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/
# cp support-files/my-small.cnf /etc/my.cnf
# cp -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# /etc/init.d/mysqld start
 Starting mysqld (via systemctl): 
 Warning: mysqld.service changed on disk. 
 Run ‘systemctl daemon-reload‘ to reload units.Job for mysqld.service 
 failed because the control process exited with error code. 
 See "systemctl status mysqld.service" and "journalctl -xe" for details.
                                                       [失敗]

這時發現啟動失敗:查看日誌,發現並沒有什麽有用的信息。

# systemctl status mysqld.service
# tail -f /var/log/messages
Aug 20 11:58:56 php systemd: Starting LSB: start and stop MySQL...
Aug 20 11:58:57 php mysqld: Starting MySQL.170820 11:58:57 mysqld_safe Logging to ‘/usr/local/mysql/data/php.err‘.
Aug 20 11:58:57 php mysqld: 170820 11:58:57 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/dataAug 20 11:58:57 php mysqld: ERROR!
Aug 20 11:58:57 php systemd: mysqld.service: control process exited,     code=exited status=1Aug 20 11:58:57 php systemd: Failed to start LSB: start and stop MySQL.
Aug 20 11:58:57 php systemd: Unit mysqld.service entered failed state.
Aug 20 11:58:57 php systemd: mysqld.service failed.

在查看/data/php.err日誌:發現報錯信息

# tail /usr/local/mysql/data/php.err 
2017-08-20 12:03:26 139715621869376 [ERROR] Can‘t open and lock privilege tables: Table ‘mysql.servers‘ doesn‘t exist
2017-08-20 12:03:26 139715621869376 [Note] Server socket created on IP: ‘::‘.
2017-08-20 12:03:26 139715621869376 [ERROR] Fatal error: Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist

經過請教得:在配置文件my.cnf的[mysqld]下添加datadir = /data/mysql 指明數據庫的路徑。 就好了。重啟成功。

# /etc/init.d/mysqld startStarting mysqld (via systemctl):                           [  確定  ]# ss -tnl|grep 3306LISTEN     0      80          :::3306                    :::*

配置好shell環境:

# PATH=$PATH:/usr/local/mysql/bin/
# echo "export PATH=$PATH:/usr/local/mysql/bin/">>/etc/profile

總結:被啟動這個問題困擾了大概好幾個小時。期間查詢網上信息,未果。最後請教老師,被這一條語句所折服。這就足以看出經驗的重要性了。


本文出自 “dianel簡單不簡單” 博客,請務必保留此出處http://dianel.blog.51cto.com/12170393/1957801

二進制安裝mariadb的奇妙經歷