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