明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在Linux下安裝與使用MySQL

[摘要]一、引言  想使用Linux已經(jīng)很長(zhǎng)時(shí)間了,由于沒(méi)有硬性任務(wù)一直也沒(méi)有系統(tǒng)學(xué)習(xí),近日由于工作需要必須使用Linux下的MySQL。本以為有Windows下使用SQL Server的經(jīng)驗(yàn),覺(jué)得在Lin...
一、引言

  想使用Linux已經(jīng)很長(zhǎng)時(shí)間了,由于沒(méi)有硬性任務(wù)一直也沒(méi)有系統(tǒng)學(xué)習(xí),近日由于工作需要必須使用Linux下的MySQL。本以為有Windows下使用SQL Server的經(jīng)驗(yàn),覺(jué)得在Linux下安裝MySql應(yīng)該是易如反掌的事,可在真正安裝和使用MySQL時(shí)走了很多彎路,遇見很多問(wèn)題,畢竟Linux和Windows本身就有很大區(qū)別。為了讓和我一樣的初學(xué)者在學(xué)習(xí)的過(guò)程中少走彎路,盡快入門,寫了此文,希望對(duì)您有所幫助。本文的Linux環(huán)境是Red Hat 9.0,MySQL是4.0.16。

  二、安裝Mysql

  1、下載MySQL的安裝文件
  安裝MySQL需要下面兩個(gè)文件:
  MySQL-server-4.0.16-0.i386.rpm   
  MySQL-client-4.0.16-0.i386.rpm
  下載地址為:http://www.mysql.com/downloads/mysql-4.0.html, 打開此網(wǎng)頁(yè),下拉網(wǎng)頁(yè)找到“Linux x86 RPM downloads”項(xiàng),找到“Server”和“Client programs”項(xiàng),下載需要的上述兩個(gè)rpm文件。

  2、安裝MySQL
  rpm文件是Red Hat公司開發(fā)的軟件安裝包,rpm可讓Linux在安裝軟件包時(shí)免除許多復(fù)雜的手續(xù)。該命令在安裝時(shí)常用的參數(shù)是 –ivh ,其中i表示將安裝指定的rmp軟件包,V表示安裝時(shí)的詳細(xì)信息,h表示在安裝期間出現(xiàn)“#”符號(hào)來(lái)顯示目前的安裝過(guò)程。這個(gè)符號(hào)將持續(xù)到安裝完成后才停止。
  1)安裝服務(wù)器端
  在有兩個(gè)rmp文件的目錄下運(yùn)行如下命令:
  [root@test1 local]# rpm -ivh MySQL-server-4.0.16-0.i386.rpm
  顯示如下信息。
    warning: MySQL-server-4.0.16-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
  Preparing...       ########################################### [100%]
  1:MySQL-server     ########################################### [100%]
   。。。。。。(省略顯示)
  /usr/bin/mysqladmin -u root password 'new-password'
  /usr/bin/mysqladmin -u root -h test1 password 'new-password'
   。。。。。。(省略顯示)
  Starting mysqld daemon with databases from /var/lib/mysql
  如出現(xiàn)如上信息,服務(wù)端安裝完畢。測(cè)試是否成功可運(yùn)行netstat看Mysql端口是否打開,如打開表示服務(wù)已經(jīng)啟動(dòng),安裝成功。Mysql默認(rèn)的端口是3306。
  [root@test1 local]# netstat -nat
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address      Foreign Address     State   
  tcp  0  0 0.0.0.0:3306     0.0.0.0:*      LISTEN   
  上面顯示可以看出MySQL服務(wù)已經(jīng)啟動(dòng)。
  2)安裝客戶端
  運(yùn)行如下命令:
  [root@test1 local]# rpm -ivh MySQL-client-4.0.16-0.i386.rpm
  warning: MySQL-client-4.0.16-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
  Preparing...    ########################################### [100%]
  1:MySQL-client  ########################################### [100%]
  顯示安裝完畢。
  用下面的命令連接mysql,測(cè)試是否成功。
 三、登錄MySQL

  登錄MySQL的命令是mysql, mysql 的使用語(yǔ)法如下:
  mysql [-u username] [-h host] [-p[password]] [dbname]
  username 與 password 分別是 MySQL 的用戶名與密碼,mysql的初始管理帳號(hào)是root,沒(méi)有密碼,注意:這個(gè)root用戶不是Linux的系統(tǒng)用戶。MySQL默認(rèn)用戶是root,由于初始沒(méi)有密碼,第一次進(jìn)時(shí)只需鍵入mysql即可。
  [root@test1 local]# mysql
  Welcome to the MySQL monitor. Commands end with ; or \g.
  Your MySQL connection id is 1 to server version: 4.0.16-standard
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  mysql>
  出現(xiàn)了“mysql>”提示符,恭喜你,安裝成功!
  增加了密碼后的登錄格式如下:
  mysql -u root -p
  Enter password: (輸入密碼)
  其中-u后跟的是用戶名,-p要求輸入密碼,回車后在輸入密碼處輸入密碼。

  注意:這個(gè)mysql文件在/usr/bin目錄下,與后面講的啟動(dòng)文件/etc/init.d/mysql不是一個(gè)文件。

  四、MySQL的幾個(gè)重要目錄

  MySQL安裝完成后不象SQL Server默認(rèn)安裝在一個(gè)目錄,它的數(shù)據(jù)庫(kù)文件、配置文件和命令文件分別在不同的目錄,了解這些目錄非常重要,尤其對(duì)于Linux的初學(xué)者,因?yàn)長(zhǎng)inux本身的目錄結(jié)構(gòu)就比較復(fù)雜,如果搞不清楚MySQL的安裝目錄那就無(wú)從談起深入學(xué)習(xí)。

  下面就介紹一下這幾個(gè)目錄。

  1、數(shù)據(jù)庫(kù)目錄
  /var/lib/mysql/

  2、配置文件
  /usr/share/mysql(mysql.server命令及配置文件)

  3、相關(guān)命令
  /usr/bin(mysqladmin mysqldump等命令)

  4、啟動(dòng)腳本
  /etc/rc.d/init.d/(啟動(dòng)腳本文件mysql的目錄)
 五、修改登錄密碼

  MySQL默認(rèn)沒(méi)有密碼,安裝完畢增加密碼的重要性是不言而喻的。

  1、命令
  usr/bin/mysqladmin -u root password 'new-password'
  格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

  2、例子
  例1:給root加個(gè)密碼123456。
  鍵入以下命令 :
  [root@test1 local]# /usr/bin/mysqladmin -u root password 123456
  注:因?yàn)殚_始時(shí)root沒(méi)有密碼,所以-p舊密碼一項(xiàng)就可以省略了。

  3、測(cè)試是否修改成功
   1)不用密碼登錄
  [root@test1 local]# mysql
  ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
  顯示錯(cuò)誤,說(shuō)明密碼已經(jīng)修改。
  2)用修改后的密碼登錄
  [root@test1 local]# mysql -u root -p
  Enter password: (輸入修改后的密碼123456)
  Welcome to the MySQL monitor. Commands end with ; or \g.
  Your MySQL connection id is 4 to server version: 4.0.16-standard
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  mysql>
  成功!
  這是通過(guò)mysqladmin命令修改口令,也可通過(guò)修改庫(kù)來(lái)更改口令。

  六、啟動(dòng)與停止

  1、啟動(dòng)
  MySQL安裝完成后啟動(dòng)文件mysql在/etc/init.d目錄下,在需要啟動(dòng)時(shí)運(yùn)行下面命令即可。
  [root@test1 init.d]# /etc/init.d/mysql start

  2、停止
  /usr/bin/mysqladmin -u root -p shutdown

  3、自動(dòng)啟動(dòng)
  1)察看mysql是否在自動(dòng)啟動(dòng)列表中
  [root@test1 local]# /sbin/chkconfig –list
  2)把MySQL添加到你系統(tǒng)的啟動(dòng)服務(wù)組里面去
  [root@test1 local]# /sbin/chkconfig – add mysql
  3)把MySQL從啟動(dòng)服務(wù)組里面刪除。
  [root@test1 local]# /sbin/chkconfig – del mysql
七、更改MySQL目錄

  MySQL默認(rèn)的數(shù)據(jù)文件存儲(chǔ)目錄為/var/lib/mysql。假如要把目錄移到/home/data下需要進(jìn)行下面幾步:

  1、home目錄下建立data目錄
  cd /home
  mkdir data

  2、把MySQL服務(wù)進(jìn)程停掉:
  mysqladmin -u root -p shutdown

  3、把/var/lib/mysql整個(gè)目錄移到/home/data
  mv /var/lib/mysql /home/data/
  這樣就把MySQL的數(shù)據(jù)文件移動(dòng)到了/home/data/mysql下

  4、找到my.cnf配置文件
  如果/etc/目錄下沒(méi)有my.cnf配置文件,請(qǐng)到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個(gè)到/etc/并改名為my.cnf)中。命令如下:
   [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

  5、編輯MySQL的配置文件/etc/my.cnf
  為保證MySQL能夠正常工作,需要指明mysql.sock文件的產(chǎn)生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等號(hào)右邊的值為:/home/mysql/mysql.sock 。操作如下:
   vi  my.cnf    (用vi工具編輯my.cnf文件,找到下列數(shù)據(jù)修改之)
   # The MySQL server
    [mysqld]
    port   = 3306
   #socket  = /var/lib/mysql/mysql.sock(原內(nèi)容,為了更穩(wěn)妥用“#”注釋此行)
    socket  = /home/data/mysql/mysql.sock   (加上此行)

  6、修改MySQL啟動(dòng)腳本/etc/rc.d/init.d/mysql
  最后,需要修改MySQL啟動(dòng)腳本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等號(hào)右邊的路徑改成你現(xiàn)在的實(shí)際存放路徑:home/data/mysql。
  [root@test1 etc]# vi /etc/rc.d/init.d/mysql
  #datadir=/var/lib/mysql   。ㄗ⑨尨诵校
  datadir=/home/data/mysql   (加上此行)

  7、重新啟動(dòng)MySQL服務(wù)
  /etc/rc.d/init.d/mysql start
  或用reboot命令重啟Linux
  如果工作正常移動(dòng)就成功了,否則對(duì)照前面的7步再檢查一下。

  八、MySQL的常用操作

  注意:MySQL中每個(gè)命令后都要以分號(hào);結(jié)尾。

  1、顯示數(shù)據(jù)庫(kù)
  mysql> show databases;
  +----------+
   Database
  +----------+
   mysql  
   test  
  +----------+
  2 rows in set (0.04 sec)
  Mysql剛安裝完有兩個(gè)數(shù)據(jù)庫(kù):mysql和test。mysql庫(kù)非常重要,它里面有MySQL的系統(tǒng)信息,我們改密碼和新增用戶,實(shí)際上就是用這個(gè)庫(kù)中的相關(guān)表進(jìn)行操作。

  2、顯示數(shù)據(jù)庫(kù)中的表
  mysql> use mysql; (打開庫(kù),對(duì)每個(gè)庫(kù)進(jìn)行操作就要打開此庫(kù),類似于foxpro )
  Database changed

  mysql> show tables;
  +-----------------+
   Tables_in_mysql
  +-----------------+
   columns_priv  
   db       
   func      
   host      
   tables_priv  
   user      
  +-----------------+
  6 rows in set (0.01 sec)

  3、顯示數(shù)據(jù)表的結(jié)構(gòu):
  describe 表名;

  4、顯示表中的記錄:
  select * from 表名;
  例如:顯示mysql庫(kù)中user表中的紀(jì)錄。所有能對(duì)MySQL用戶操作的用戶都在此表中。
  Select * from user;

  5、建庫(kù):
  create database 庫(kù)名;
  例如:創(chuàng)建一個(gè)名字位aaa的庫(kù)
  mysql> create databases aaa;
6、建表:
  use 庫(kù)名;
  create table 表名 (字段設(shè)定列表);
  例如:在剛創(chuàng)建的aaa庫(kù)中建立表name,表中有id(序號(hào),自動(dòng)增長(zhǎng)),xm(姓名),xb(性別),csny(出身年月)四個(gè)字段
  use aaa;
  mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
  可以用describe命令察看剛建立的表結(jié)構(gòu)。
  mysql> describe name;

  +-------+---------+------+-----+---------+----------------+
   Field Type   Null Key Default Extra     
  +-------+---------+------+-----+---------+----------------+
   id   int(3)      PRI NULL   auto_increment
   xm   char(8) YES     NULL           
   xb   char(2) YES     NULL           
   csny  date   YES     NULL           
  +-------+---------+------+-----+---------+----------------+

  7、增加記錄
  例如:增加幾條相關(guān)紀(jì)錄。
  mysql> insert into name values('','張三','男','1971-10-01');
  mysql> insert into name values('','白云','女','1972-05-20');
  可用select命令來(lái)驗(yàn)證結(jié)果。
  mysql> select * from name;
  +----+------+------+------------+
   id xm  xb  csny   
  +----+------+------+------------+
    1 張三 男  1971-10-01
    2 白云 女  1972-05-20
  +----+------+------+------------+

  8、修改紀(jì)錄
  例如:將張三的出生年月改為1971-01-10
  mysql> update name set csny='1971-01-10' where xm='張三';

  9、刪除紀(jì)錄
  例如:刪除張三的紀(jì)錄。
  mysql> delete from name where xm='張三';

  10、刪庫(kù)和刪表
  drop database 庫(kù)名;
  drop table 表名;

  九、增加MySQL用戶

  格式:grant select on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by "密碼"
例1、增加一個(gè)用戶user_1密碼為123,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MySQL,然后鍵入以下命令:

  mysql> grant select,insert,update,delete on *.* to user_1@"%" Identified by "123";
例1增加的用戶是十分危險(xiǎn)的,如果知道了user_1的密碼,那么他就可以在網(wǎng)上的任何一臺(tái)電腦上登錄你的MySQL數(shù)據(jù)庫(kù)并對(duì)你的數(shù)據(jù)為所欲為了,解決辦法見例2。

  例2、增加一個(gè)用戶user_2密碼為123,讓此用戶只可以在localhost上登錄,并可以對(duì)數(shù)據(jù)庫(kù)aaa進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MySQL數(shù)據(jù)庫(kù)所在的那臺(tái)主機(jī)),這樣用戶即使用知道user_2的密碼,他也無(wú)法從網(wǎng)上直接訪問(wèn)數(shù)據(jù)庫(kù),只能通過(guò)MYSQL主機(jī)來(lái)操作aaa庫(kù)。

  mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";

  用新增的用戶如果登錄不了MySQL,在登錄時(shí)用如下命令:

  mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登錄主機(jī)的ip地址)

  十、備份與恢復(fù)

  1、備份

  例如:將上例創(chuàng)建的aaa庫(kù)備份到文件back_aaa中

  [root@test1 root]# cd /home/data/mysql (進(jìn)入到庫(kù)目錄,本例庫(kù)已由val/lib/mysql轉(zhuǎn)到/home/data/mysql,見上述第七部分內(nèi)容)
  [root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa

  2、恢復(fù)

  [root@test mysql]# mysql -u root -p ccc < back_aaa