mysql安装被打断_Mysql的安装/性能优化/安全加固
安裝:
增加一個登錄用戶和群組#groupaddmysql
#useradd -r -g mysql mysql解壓縮Mysql數據包
#tar-zxvf mysql-5.6.13.tar.gz進入Mysql解壓縮目錄
#cd mysql-5.6.13配置安裝mysq
l#cmake.
#make &&make install建立配置文件
#cp./support-files/my-medium.cnf/etc/my.cnf修改相應文件的權限
#chown -R root:mysql? /usr/local/mysql
#chown -R? mysql? data初始化數據庫
#scripts/mysql_install_db? --user=mysql調整lib庫路徑
#echo“/usr/local/mysql/lib/mysql”>>/etc/ld.so.conf
#ldconfig刷新文件路徑
Mysql啟動控制
#/usr/local/mysql/bin/mysqld_safe? --user=mysql? &將mysql添加為系統服務
#cpsupport-files/mysql.server? /etc/init.d/mysqld
#chmod +x /etc/init.d/mysqld
#chkconfig --add mysqld
#chkconfig mysqld on
設置mysql程序的執行路徑
#exportPATH=$PATH:/usr/local/mysql/bin
#echo“PATH=$PATH:/usr/local/mysql/bin”>>/etc/profile
注意:在編譯mysql源碼時碰到如下錯誤
checkingfortermcapfunctionslibrary...configure:error:Nocurses/termcaplibraryfound
解決方法:./configure--with-named-curses-libs=/lib64/libncursesw.so.5
性能優化和安全加固:
1、修改root用戶的的口令
缺省情況下MySQL沒有設置密碼,我們可以用三種方法設置密碼頭:*用mysqladmin命令來改root用戶口令
#mysqladmin-urootpasswordecan5com//設置MySQL管理操作用戶root的密碼為P@ssw0rd
*用setpassword修改口令:
mysql>setpasswordforroot@localhost=password('P@ssw0rd');*直接修改user表的root用戶口令mysql>usemysql;
mysql>updateusersetpassword=password('P@ssw0rd')whereuser='root';mysql>flushprivileges;
2、刪除默認的數據庫和用戶
我們的數據庫是在本地,并且也只需要本地的php腳本對mysql進行讀取,所以很多用戶不需要.mysql初始化后會自動生成空用戶和test庫,這會對數據庫構成威脅,我們全部刪除.我們使用mysql客戶端程序連接到本地的mysql服務器后出現如下提示:mysql>dropdatabasetest;mysql>usemysql;
mysql>deletefromdb;
mysql>deletefromuserwherenot(host="localhost"anduser="root");mysql>flushprivileges;
3、改變默認mysql管理員的名稱//僅為建議
根據個人習慣,因為默認的mysql的管理員名稱是root,所以如果能夠修改的話,能夠防止一些腳本小子對系統的窮舉.我們可以直接修改數據庫,把root用戶改為"admin".mysql>usemysql;
mysql>updateusersetuser="admin"whereuser="root";mysql>flushprivileges;
4、提高本地安全性
提高本地安全性,主要是防止mysql對本地文件的存取,比如黑客通過mysql把/etc/passwd獲取了,會對系統構成威脅.mysql對本地文件的存取是通過SQL語句來實現,主要是通過LoadDATALOCALINFILE來實現,我們能夠通過禁用該功能來防止黑客通過SQL注射等獲取系統核心文件.禁用該功能必須在my.cnf的[mysqld]部分加上一個參數:set-variable=local-infile=0
5、禁止遠程連接mysql
因為我們的mysql只需要本地的php腳本進行連接,所以我們無需開socket進行監聽,那么我們完全可以關閉監聽的功能.有兩個方法實現:
*配置my.cnf文件,在[mysqld]部分添加skip-networking參數.
*mysqld服務器中參數中添加--skip-networking啟動參數來使mysql不監聽任何TCP/IP連接,增加安全性.如果要進行mysql的管理的話,可以在服務器本地安裝一個phpMyadmin來進行管理.
6、控制數據庫訪問權限
對于使用php腳本來進行交互,最好建立一個用戶只針對某個庫有update、select、delete、insert、droptable、createtable等權限,這樣就很好避免了數據庫用戶名和密碼被黑客查看后最小損失.比如下面我們創建一個數據庫為db1,同時建立一個用戶test1能夠訪問該數據庫.
mysql>createdatabasedb1;
mysql>grantselect,insert,update,delete,create,dropprivilegesondb1.*totest1@localhostidentifiedby'admindb';
以上SQL是創建一個數據庫db1,同時增加了一個test1用戶,口令是admindb,但是它只能從本地連接mysql,對db1庫有select,insert,update,delete,create,drop
7、限制一般用戶瀏覽其他用戶數據庫
如果有多個數據庫,每個數據庫有一個用戶,那么必須限制用戶瀏覽其他數據庫內容,可以在啟動MySQL服務器時加--skip-show-database啟動參數就能夠達到目的.
忘記mysql密碼的解決辦法,如果不慎忘記了MySQL的root密碼,我們可以在啟動MySQL服務器時加上參數--skip-grant-tables來跳過授權表的驗證:./safe_mysqld--skip-grant-tables&
這樣我們就可以直接登陸MySQL服務器,然后再修改root用戶的口令,重啟MySQL就可以用新口令登陸了.
8、數據庫文件的安全
我們默認的mysql是安裝在/usr/local/mysql目錄下的,那么對應的數據庫文件就是在/usr/local/mysql/var目錄下,那么我們要保證該目錄不能讓未經授權的用戶訪問后把數據庫打包拷貝走了,所以要限制對該目錄的訪問.我們修改該目錄的所屬用戶和組是mysql,同時改變訪問權限:
#chown-Rmysql.mysql/usr/local/mysql/var#chmod-Rgo-rwx/usr/local/mysql/var
9、刪除歷史記錄
執行以上的命令會被shell記錄在歷史文件里,比如bash會寫入用戶目錄的.bash_history文件,如果這些文件不慎被讀,那么數據庫的密碼就會泄漏.用戶登陸數據庫后執行的SQL命令也會被MySQL記錄在用戶目錄的.mysql_history文件里.
如果數據庫用戶用SQL語句修改了數據庫密碼,也會因.mysql_history文件而泄漏.所以我們在shell登陸及備份的時候不要在-p后直接加密碼,而是在提示后再輸入數據庫密碼.另外這兩個文件我們也應該不讓它記錄我們的操作,以防萬一.#rm.bash_history.mysql_history#ln-s/dev/null.bash_history#ln-s/dev/null.mysql_history
對于使用php腳本來進行交互,最好建立一個用戶只針對某個庫有update、select、delete、insert、droptable、createtable等權限,這樣就很好避免了數據庫用戶名和密碼被黑客查看后最小損失.比如下面我們創建一個數據庫為db1,同時建立一個用戶test1能夠訪問該數據庫.
mysql>createdatabasedb1;
mysql>grantselect,insert,update,delete,create,dropprivilegesondb1.*totest1@localhostidentifiedby'admindb';
以上SQL是創建一個數據庫db1,同時增加了一個test1用戶,口令是admindb,但是它只能從本地連接mysql,對db1庫有select,insert,update,delete,create,drop操作權限.7、限制一般用戶瀏覽其他用戶數據庫
如果有多個數據庫,每個數據庫有一個用戶,那么必須限制用戶瀏覽其他數據庫內容,可以在啟動MySQL服務器時加--skip-show-database啟動參數就能夠達到目的.
忘記mysql密碼的解決辦法,如果不慎忘記了MySQL的root密碼,我們可以在啟動MySQL服務器時加上參數--skip-grant-tables來跳過授權表的驗證:./safe_mysqld--skip-grant-tables&
這樣我們就可以直接登陸MySQL服務器,然后再修改root用戶的口令,重啟MySQL就可以用新口令登陸了.
8、數據庫文件的安全
我們默認的mysql是安裝在/usr/local/mysql目錄下的,那么對應的數據庫文件就是在/usr/local/mysql/var目錄下,那么我們要保證該目錄不能讓未經授權的用戶訪問后把數據庫打包拷貝走了,所以要限制對該目錄的訪問.我們修改該目錄的所屬用戶和組是mysql,同時改變訪問權限:
#chown-Rmysql.mysql/usr/local/mysql/var#chmod-Rgo-rwx/usr/local/mysql/var
9、刪除歷史記錄
執行以上的命令會被shell記錄在歷史文件里,比如bash會寫入用戶目錄的.bash_history文件,如果這些文件不慎被讀,那么數據庫的密碼就會泄漏.用戶登陸數據庫后執行的SQL命令也會被MySQL記錄在用戶目錄的.mysql_history文件里.
如果數據庫用戶用SQL語句修改了數據庫密碼,也會因.mysql_history文件而泄漏.所以我們在shell登陸及備份的時候不要在-p后直接加密碼,而是在提示后再輸入數據庫密碼.另外這兩個文件我們也應該不讓它記錄我們的操作,以防萬一.#rm.bash_history.mysql_history#ln-s/dev/null.bash_history#ln-s/dev/null.mysql_history
10、其他
另外還可以考慮使用chroot等方式來控制mysql的運行目錄,更好的控制權限,具體可以參考相關文章.my.cnf的調試參數.
11、快速修復MySQL數據庫修復數據庫
#mysqlcheck-A-o-r-p修復指定的數據庫
#mysqlcheck-o-rDatabase_NAME -p
12、跟據內存的大小選擇MySQL的負載
選擇相應的文件名復制到/etc/my.cnf,如果是RPM包安裝:/usr/share/doc/mysql-XXX/目錄下有,如果是源代碼編譯安裝:support-files/目錄下有.
#cp/usr/local/share/mysql-***/my-large.cnf/etc/my.cnfmy-small.cnf#>my-medium.cnf#32M-64Mmy-large.cnf#memory=512Mmy-huge.cnf#1G-2G
my-innodb-heavy-4G.cnf#4GB
mysql批量刪除表,相同前綴的表
mysql中沒有現有的工具可以直接實現,所以原理就是使用現有的功能實現droptable的語句的自動拼寫,從而達到簡化目的。下邊舉例說明,如果想刪除”wp_”開頭的表:SelectCONCAT('droptable',table_name,';')FROMinformation_schema.tables
Wheretable_nameLIKE'XXX_%';
總結
以上是生活随笔為你收集整理的mysql安装被打断_Mysql的安装/性能优化/安全加固的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界java多大内存_我的世界电脑版
- 下一篇: oracle to_char 数值,or