先森來公司試用也有一個半月了,從剛畢業到現在也成長了很多。運維工程師,最基本的當屬各種命令,然后是各種服務的搭建部署了。先森這一個半月也不是白混的,也搭建了很多服務了,好久沒更新博客了,今天也把先森編譯安裝MySQL的過程寫出來。

MySQL編譯安裝
編譯安裝
1、首先要先查看系統是否已經創建過mysql用戶。使用下面的命令查看是否有mysql用戶及用戶組
cat /etc/passwd #查看用戶列表 cat /etc/group #查看用戶組列表
2、如果沒有就創建
groupadd mysql useradd -g mysql mysql
3、解壓安裝包到/usr/local/目錄下,并重命名為mysql。修改/usr/local/mysql權限:
chown -R mysql:mysql /usr/local/mysql
4、修改配置文件
注:在啟動MySQL服務時,會按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認位置!
在CentOS 6.4版操作系統的最小安裝完成后,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。
mv /etc/my.cnf /etc/my.cnf.bak
復制mysql服務啟動配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
5、進入安裝路徑,執行初始化配置腳本,創建系統自帶的數據庫和表
cd /usr/local/mysql scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
6、添加到系統服務、啟動MySQL
添加服務,拷貝服務腳本到init.d目錄,并設置開機啟動
cp support-files/mysql.server /etc/init.d/mysql chkconfig mysql on service mysql start --啟動MySQL
7、添加環境變量
啟動MySQL后,我們還無法直接使用“mysql”命令進入數據庫,這時候還需要添加環境變量。
修改/etc/profile文件,在文件末尾添加
PATH=/usr/local/mysql/bin:$PATH export PATH
保存退出后,運行下面的命令,讓配置立即生效
source /etc/profile
8、安全
雖然我們這時候已經可以直接進入數據庫并未數據庫用戶設置密碼了,但是這樣并不安全。MySQL為我們提供了安全配置向導腳本mysql_secure_installation
執行 /usr/local/mysql/bin/mysql_secure_installation
下面是執行后的一些重要交互項,中間內容省略:
Enter current password for root (enter for none):<–初次運行直接回車 ... Set root password? [Y/n] <– 是否設置root用戶密碼,輸入y并回車或直接回車 New password: <– 設置root用戶的密碼 Re-enter new password: <– 再輸入一次你設置的密碼 ... Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,生產環境建議刪除,所以直接回車 ... Disallow root login remotely? [Y/n] <–是否禁止root遠程登錄,根據自己的需求選擇Y/n并回車,建議禁止 ... Remove test database and access to it? [Y/n] <– 是否刪除test數據庫,直接回車 ... Reload privilege tables now? [Y/n] <– 是否重新加載權限表,直接回車
9、如果我們需要給其他數據庫用戶設置密碼,以root為例,執行下面的命令設置密碼:
mysql -uroot
mysql> SET PASSWORD = PASSWORD('123456');
10、在安全向導中我們已經關閉了root用戶遠程訪問,若因業務需要我們由需要設置root用戶遠程訪問,那么執行
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; mysql> flush privileges;
簡單的解釋一下:
*.*是指允許訪問任何數據庫與數據表;
'root'@'%':root是指定用戶,百分號是允許root用戶從任何網絡遠程訪問數據庫,也可以是“192.168.2.%”這種形式。
后面的123456就是遠程訪問的密碼啦,不知道如果跳過上一步的設置密碼過程,直接在這里設置密碼,是否也能達到設置密碼的效果,先森還沒有嘗試過。如果知道的朋友可以告訴先森一聲。
11、配置防火墻
防火墻的3306端口默認沒有開啟,若要遠程訪問,需要開啟這個端口
打開/etc/sysconfig/iptables
在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存,并關閉該文件,在終端內運行下面的命令,重啟防火墻以刷新防火墻配置:
service iptables restart
12、創建數據庫
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
總結
因為數據庫可以說是服務器中最重要的服務之一了,所以它的安全就顯得尤為重要。下面是先森的一些建議:
1、最好不要設置遠程訪問權限;2、不要開啟防火墻端口或使用默認3306端口;
3、盡量不要使用root這種默認用戶;
4、保證密碼的復雜性;
5、做好數據庫備份。
當然做好數據庫的安全不僅僅是以上幾點。但如果連以上幾點都沒有做到,那么數據庫就非常危險了。
歷史上的今天:
轉載請注明出處來自http://www.cnidcc.cn/centos_mysql.html

川公網安備 51011202000104號
確實不錯
收藏了備用~
不錯哦,持續更新~
贊一下,故意我之后可能也會用到mysql。不過服務器版本不知道回事多少。