這次,接著上一篇《CentOs minimal安裝和開發(fā)環(huán)境部署》,講下Linux環(huán)境mysql的安裝、初始化配置、以及參數(shù)優(yōu)化,中間會穿插在實際操作過程中遇到的新知識擴(kuò)展。有些是承接上面的知識,如果不太清楚,可以到上一篇去看下。
一、安裝準(zhǔn)備
下載得到安裝包很簡單。
1、rpm安裝:A、在linux下使用wget獲取 B、在虛擬機(jī)所在的宿主機(jī)windows下,在網(wǎng)絡(luò)上下載Rpm安裝包,然后通過之前我們配置的samba共享目錄拷貝到centos下。
單獨下載要注意你需要的rpm包:
MySQL-server-5.1.x-0.i386.rpm //服務(wù)端MySQL-client-5.1.x-0.i386.rpm //客戶端 MySQL-devel-5.1.x-0.i386.rpm //開發(fā)包
...
2、yum 在線安裝:使用CentOs的Yum(如果有特定的Mysql版本需求,要確定你的Yum庫里有需要的mysql版本)
Yum (Yellow dog Updater, Modified)是一個基于rpm包管理的字符前端軟件包管理器。能夠從指定服務(wù)器自動下載rpm包并且安裝,處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
簡單認(rèn)識下幾個操作:
yum -y install samba #安裝samba,“-y”接受所有,不用手動一個個去確認(rèn)每一步。
yum remove samba #卸載samba
yum info installed #列出系統(tǒng)中所有安裝過的rpm包
yum list samba #列出資源庫中指定的可以安裝或更新以及已經(jīng)安裝的rpm包
yum info samba #列出資源庫中指定的可以安裝或更新以及已經(jīng)安裝的rpm包的信息
yum search samba #搜索匹配指定字符的rpm包
二、安裝Mysql
檢測當(dāng)前系統(tǒng)是否已經(jīng)安裝了mysql :運行下面的命令,如果已經(jīng)安裝過,會顯示mysql的版本信息。
rpm -qa|grep mysql
如果已經(jīng)安裝過mysql,但是不是自己需要的版本,比如需要高版本的mysql對事件的支持等,怎么辦?刪除唄!注意,這可能會刪除一些相關(guān)的依賴庫而影響到其他軟件,不過可以重新安裝。
yum remove mysql-server mysql-devel mysql-client #刪除mysql的server、client、以及devel
1、rpm安裝:
rpm -ivh MySQL-server-5.1.x-0.i386.rpm #安裝服務(wù)端(x:你下載的對應(yīng)版本號)rpm -ivh MySQL-client-5.1.x-0.i386.rpm #安裝客戶端rpm -ivh MySQL-devel-5.1.x-0.i386.rpm #安裝開發(fā)包
2、yum安裝:
yum -y install mysql-server #安裝服務(wù)器端yum -y install mysql-client #安裝客戶端yum -y install mysql-devel #安裝開發(fā)包
這里注意:
A、根據(jù)你的開發(fā)環(huán)境需要,你可以選擇對應(yīng)的rpm包。你可以在命令行,使用"yum search mysql"搜索與mysql有關(guān)的安裝包,從中選擇你需要的。如果你記不住名字也可以這樣搜索下。
yum search mysql
B、上面列出rpm包名字和簡介,還可以通過yum info獲取具體rpm包的具體的版本信息
yum info mysql-server #列出mysql-server版本信息yum info mysql-clientyum info mysql-devel#或者yum info mysql* #一個命令一下子列出mysql相關(guān)的所有rpm安裝包版本信息
三、Mysql初始配置
剛剛安裝好的mysql需要進(jìn)行一定的配置,才適合使用。
1、設(shè)置Mysql開機(jī)啟動
chkconfig --list mysql #查看mysql服務(wù)開機(jī)啟動狀態(tài)
mysql 0:off1:off2:on3:on4:on5:on6:off
#如果2--5都是on,就不需要下面的命令了
chkconfig mysql on 設(shè)置mysql服務(wù)開機(jī)啟動
chkconfig,如果不知道是干什么的,那現(xiàn)在來了解下
chkconfig,用來更新(啟動或停止)和查詢系統(tǒng)服務(wù)的運行級信息。使用語法:chkconfig [--add][--del][--list][系統(tǒng)服務(wù)] 或 chkconfig [--level <等級代號>][系統(tǒng)服務(wù)][on/off/reset]eg:chkconfig --list [name]:顯示所有運行級系統(tǒng)服務(wù)的運行狀態(tài)信息(on或off)。如果指定了name,那么只顯示指定的服務(wù)在不同運行級的狀態(tài)。chkconfig --add name:增加一項新的服務(wù)chkconfig --del name:刪除服務(wù)chkconfig [--level levels] name:設(shè)置某一服務(wù)在指定的運行級是被啟動,停止還是重置。
level,運行級別,可以用“runlevel”這個命令查詢到當(dāng)前系統(tǒng)的運行級別,也可以“init 0-6”切換運行級別
0:表示關(guān)機(jī)1:單用戶模式2:無網(wǎng)絡(luò)連接的多用戶命令行模式3:有網(wǎng)絡(luò)連接的多用戶命令行模式4:不可用5:帶圖形界面的多用戶模式6:重新啟動
2、Mysql服務(wù)的啟動/關(guān)閉/重啟
service mysql start/shutdown/restart/status #啟動、關(guān)閉、重啟、查看服務(wù)當(dāng)前狀態(tài)或者 /etc/rc.d/init.d/mysqld start/shutdown/restart/status #啟動、關(guān)閉、重啟、查看服務(wù)當(dāng)前狀態(tài)
3、安全設(shè)置
⑴、剛安裝時,root用戶是空的,需要修改密碼: ?、賛ysqladmin -u root password ‘new-password’ ②或者,登陸后,直接修改用戶表里的密碼 mysql -u root #用root用戶登錄 1. select user,host,password from mysql.user; 查看數(shù)據(jù)庫的用戶 2. use mysql #切換到mysql表 set password for root@localhost=password('123456'); #設(shè)置指定域名下root賬號的密碼 set password for root@域名=password('123456'); 3.或者,更常見的sql操作: update user set password=password('123456') where user=‘root@localhost’;
⑵、匿名用戶是危險的
delete from mysql.user where user=''; #刪除匿名用戶
⑶、退出mysql: exit;
4、測試
登陸:
[root@dream ~]mysql -u root #匿名登錄,已設(shè)置密碼或者刪除了匿名用戶,登陸失敗[root@dream ~]mysql -u root -p #通過密碼用root登錄Enter password: #在這里輸入密碼123456[root@dream ~]mysql -u root -p 123456 #顯示密碼登陸
sql操作:
mysql> create database test; #建立名為test的數(shù)據(jù)庫,這個庫安裝后就有的。mysql> show databases; #查看系統(tǒng)已存在的數(shù)據(jù)庫mysql> use test #切換到指定的數(shù)據(jù)庫mysql> create table tbl_user(ID int, Name varchar(50)); #建立表mysql> show tables; #查看數(shù)據(jù)庫中已存在的表mysql> drop table tbl_user; #刪除表mysql>drop database test; #刪除名為test數(shù)據(jù)庫 mysql> exit #退出MySQL服務(wù)器
5、NaviCat遠(yuǎn)程連接的權(quán)限問題
遠(yuǎn)程登錄會出現(xiàn)如下提示:
1103 - host xxx.xxx.xxx.xx is not allowed to connec to this mysql server.或1045 - Access denied for user 'root'@'192.168.1.11' (using password: YES).
解決方案:
//mysql訪問grant all privileges on *.* to 'root'@'%' identified by '123456';#其實就是權(quán)限問題,設(shè)置root在所有域名(%表示任何地址)登陸時,賦給所有權(quán)限,密碼123456。根據(jù)需要可設(shè)置更嚴(yán)格些。
四、數(shù)據(jù)庫和表的導(dǎo)入、導(dǎo)出
1.導(dǎo)出整個的數(shù)據(jù)庫:mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > 導(dǎo)出的文件名
mysqldump -u root -p db_test >/home/bak/dbtest.sql
2.導(dǎo)出指定數(shù)據(jù)庫中的一個表:mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名> 導(dǎo)出的文件名
mysqldump -u root -p db_test tbl_user >/home/bak/test_user.sql
3.只導(dǎo)出一個結(jié)構(gòu)(struct):加上-d參數(shù)
mysqldump -u root -p -d –add-drop-table db_test >/home/bak/dbtest_struct.sql
4.只導(dǎo)出一個數(shù)據(jù)(data):加上-t參數(shù)
mysqldump -u root -p -t –add-drop-table db_test >/home/bak/dbtest_struct.sql
⑴.只導(dǎo)出表結(jié)構(gòu) -d mysqldump -h 192.168.1.11 -u root -p 123456 -d –default-character-set=utf8 test >sql.sql⑵.只導(dǎo)出數(shù)據(jù) -t mysqldump -h 192.168.1.11 -u root -p 123456 -t –default-character-set=utf8 test >sql.sql
注:①.-d 沒有數(shù)據(jù)(不導(dǎo)出數(shù)據(jù),只導(dǎo)出數(shù)據(jù)結(jié)構(gòu)和表結(jié)構(gòu))
-t 不導(dǎo)出結(jié)構(gòu),只要數(shù)據(jù)
–add-drop-table 在每個create語句之前增加一個drop table
–default-character-set 設(shè)置字符集
②.這里的導(dǎo)出文件沒有加路徑,就是相對路徑,當(dāng)前的目錄下的文件。
③.密碼是顯示輸入的,跟在-p后面。
5.導(dǎo)入數(shù)據(jù)庫:source 命令
[root@dream ~] mysql -u root -p #登陸mysql>use test;mysql>source /home/bak/db_test.sql