二進制安裝mariadb的奇妙經歷
二進制安裝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的奇妙經歷