天天看點

MySQL安裝以及簡單指令用法

MYSQL:關系型資料庫

    存儲引擎: 負責将邏輯層的概念轉化為實體層機制,在實體層完成實體機制。

    支援事務:transaction

         必須滿足的條件:ACID(一緻性, 持久性, 原子性, 隔離性)

    鎖:并發通路

   随機通路:資料在磁盤上是随機存儲的

安裝:

   OS Vendor使用作業系統安裝:

        以CentOS為例: mysql,

                       mysql-server:

                       mysql-devel:編譯安裝時需要

       MySQL官方提供的安裝:官方網站:www.mysql.com

    源碼編譯安裝

    通用二進制格式程式包安裝

    rpm包安裝

    還可以通過鏡像下載下傳:http://mirrors.sohu.com/

MySQL的配置檔案:my.cnf,集中式多段配置檔案

MySQL伺服器程式:mysqld

    用戶端程式:mysql, mysqldump, mysqladmin

   建議在生産環境中将mysql安裝在邏輯卷上,這樣友善以後的管理,空間不夠的話可以增大空間。

datadir: /var/lib/mysql/

datadir: /usr/local/mysql/data/

mysqld: mysql,:mysql

以mysql使用者的身份操作,屬主和屬組都為mysql,并且對所操作的目錄有讀和寫的權限。

安裝操作

1:建立邏輯卷并挂載

  建立磁盤分區

      #fdisk /dev/sda

  建立實體分區  

      #pvcreate /dev/sda{3,5}

  建立卷組為myvg

      #vgcreate myvg /dev/sda{3,5}

  建立邏輯卷mydata

       #lvcreate -L 20G -n mydata myvg

  對其進行格式化

      #mke2fs -t ext4 -L MYDATA -b 2048 /dev/myvg/mydata

  進行挂載

      #mkdir /mydata

      #mount -a

要使得能夠開機自動挂載,需要編輯配置檔案/etc/fstab

<a target="_blank" href="http://blog.51cto.com/attachment/201308/104740568.png"></a>

  在/mydata下建立data目錄

      #mkdir /mydata/data

2:解壓安裝

  添加系統使用者mysql

      #useradd -r mysql

  修改屬主和屬組

      #chown -R mysql:mysql /mydata/data

 下載下傳的檔案解壓到/usr/local/

      #tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local

在這裡,我們還有檢視是否安裝啟動别的mysql版本的伺服器,如果有,那麼我們需要将其關閉

      #ss -tanl其中3306端口需要是關閉狀态

  在/usr/local/下  

      #ln -sv mysql-5.5.33-linux2.6-x86_64 mysql

      #chown -R root:mysql /usr/local/mysql/*

      #cd mysql/support-files有樣例,我們可以根據自己的需要選擇

  将選擇的檔案複制一份到/etc/目錄下并修改檔案名為my.cnf

      #cp my-large.cnf /etc/my.cnf

3:修改配置檔案

      # vim /etc/my.cnf

  找到相關設定進行修改操作

<a target="_blank" href="http://blog.51cto.com/attachment/201308/110426436.png"></a>

     thread_concurrency = 4并發核心數, 如果實體核心為2,這裡就可以填寫4

     在下面添加datadir = /mydata/data

  添加  

   innodb_file_per_table = 1  每表一個表空間

  服務腳本

     #cp mysql.server /etc/rc.d/init.d/mysqld

  添加mysql服務

     #chkconfig --add mysqld

  啟動mysql

     #service mysqld start

這時候顯示啟動失敗了,分析出來我們要先初始化,因而我們安裝mysql時要注意,第一次安裝啟動時要進行初始化,對所出現的問題我們進行處理

  先将/mydata/data/下的所有檔案删除掉

     #rm -rf /mydata/data/*

  進行初始化

     #cd /usr/local/mysql/

     #scripts/mysql_install_db --user=mysql --datadir=/mydata/data/初始化成功

  啟動服務

  這時候還不能連接配接用戶端

# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

   執行腳本

     # . /etc/profile.d/mysql.sh

     #mysql就可以進入了

4:因為我們的安裝不在标準路徑下,是以還要導出相關檔案

  導出幫助檔案

     #vim /etc/man.config

MANPATH /usr/local/mysql/man

  導出頭檔案

     #ln -sv /usr/local/mysql/include /usr/local/mysql

  導出庫檔案

     #vim /etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib

至此我們的mysql配置完成。

     mysql&gt; show [global|session] variables; 顯示伺服器參數變量

  有些變量的值可以修改,能夠改變mysql的工作特性

  有些可以動态調整,即刻生效;

  另外一些隻能修改配置檔案後,重新開機生效;

     mysql&gt; show [global|session] status;  顯示伺服器狀态變量,記錄了目前包括過去的時間内mysql的運作統計資料

  MySQL使用者名:USERNAME@HOST

mysql用戶端執行指令:

  用戶端指令:不需語句結束符

      mysql&gt; help

  伺服器端指令:特指SQL語句, 必須有語句結束符,預設為分号;

      mysql&gt; help COMMAND

使用者管理:

  建立使用者:

           CREATE USER username@host [IDENTIFIED BY 'password'];

  使用者或主機可以使用通配符:

      %:比對任意長度的任意字元;

      _: 比對任意單個字元;

  例如:CREATE USER ‘wpuser’@‘172.16.%.%’IDENTIFIED BY 'wppass'

        允許172.16.網段的主機連接配接 建立wpuser使用者  密碼為wppass

使用者授權:GRANT ALL PRIVILEGES ON dbname.tablename TO username@host [IDENTIFIED BY 'password'];

        dbname.tablename  dbname表示庫名

                          tablename表示表名

修改使用者密碼:

 1、mysql&gt; SET PASSWORD FOR username@host=PASSWORD('password');

 2、# mysqladmin -uusername password 'password' -p

             -p 後面跟以前的密碼

删除使用者:DROP USER username@host;

授權

   GRANT ALL ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY 'mypass';有特殊符号需要用引号引起來

mysql&gt;SELECT VERSION();    顯示版本号

mysql&gt;SHOW DATABASES;      顯示資料庫

mysql&gt;SELECT user,host,password FROM user; 從user表查詢user,host,password 相關資訊

mysql&gt;FLUSH PRIVILEGES;   重讀授權表

加密碼:

    mysql&gt;SET PASSWORD FOR ‘root‘@host=PASSWORD('password');

建立表:

    mysql&gt;CREATE TABLE tb_name (col1 defination, col2 defination, ..., key defination);

删除表:

    mysql&gt;DROP TABLE tb_name;

    INSERT INTO  :插入内容

    SELECT 字段 FROM 表 WHERE ;

字段:

    col1, col2

    *

    col1 AS NEWNAME, col2,

    比較運算:&gt;, &lt;, &gt;=, &lt;=, =, !=

    NULL: IS NULL, IS NOT NULL

LIKE :

    %: 任意長度的任意字元

    _:任意單個字元

IN (LIST)

    RLIKE: 正規表達式書寫模式

    UPDATE 表名 SET 字段名=值 WHERE;

    DELETE FROM 表名 WHERE ;

mysql&gt;

   quit, \q      退出

   delimiter, \d  變換語句結束符,定義使用的結束符    

   go, \g       不知道結束符而把語句送到伺服器端去執行

   use, \u      設定預設資料庫

   ego, \G     不知道結束符而把語句送到伺服器端去執行,并且将每一行的結果縱向顯示

   system, \!    不退出目前mysql用戶端程式而執行系統指令  

   status, \s     顯示目前mysql伺服器的狀态資訊

mysql:執行方式有兩種

互動式方式:

   -h, --host=     指定要連接配接的遠端主機

   -u, --user=     指定使用者名

   -p, --password=   密碼

   -D db_name, --database=  可以直接将某個指定的資料庫設定為資料庫

   -e 'SQL_Statement;' 不會連接配接到主機,而是将指令送到對方主機後直接将結果取回來

批處理模式:(使用sql腳本)

    mysql OPTIONS &lt; script.sql

    mysql&gt; source /path/to/script.sql

#vim test.sql

create database wpdb;

Grant all wpdb.* ‘wpuser’@’172.16.%.%’;

Grant all wpdb.* ‘wpuser’@’localhost’;

   #mysql -uroot -pmypass &lt; test.sql

   mysqld, mysql: /etc/my.cnf配置檔案

          /etc/my.cnf, /etc/mysql/my.cnf, $MYSQL_BASE/my.cnf, ~/.my.cnf

#vim .my.cnf

[client]

user=root

host=localhost

password=mypass

     #chmod 600 .my.cnf 修改權限對目前使用者有效

 這樣本機使用者就不用每次都指定使用者名、主機名、密碼了,而其他使用者不會有權限,

 顯示所支援的所有字元集:

    mysql&gt; SHOW CHARACTER SET;

 顯示所有字元集的排序規則:

    mysql&gt; SHOW COLLATION;

關系型資料庫:

  Constraint:

  主鍵:primary key

      不能為空,惟一;

  惟一鍵:uniq key

      可以為空,惟一;

  外鍵:foreign key

      引用性限制

  檢查性限制:

       0&lt;age&lt;150

MySQL基礎操作練習(所屬的庫叫做testdb):

建立如下表(包括結構和内容):

ID    Name          Age     Gender     Course

1     Ling Huchong   24      Male       Huashan

2     Huang Rong    19      Female     Emen

3     Lu Wushaung   18      Female     Hengshan

4     Zhu Ziliu     52      Male       Kongdong

5     Chen Jialuo   22      Male      Shaolin

建立庫:

  mysql&gt;create database testdb

啟用testdb庫

  mysql&gt;use testdb

建立表tb1

  mysql&gt;CREATE TABLE tb1 (ID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, Name CHAR(30) NOT NULL UNIQUE KEY, Age TINYINT UNSIGNED, Gender CHAR(1) DEFAULT 'M', Course VARCHAR(50) NOT NULL);

檢視資料庫

   mysql&gt; show databases;

DESCRIPTION tb1 檢視有幾個位元組

插入内容

   mysql&gt; insert into tb1 values (1,'Ling Huchong',24,'Male','Huashan');

   mysql&gt; insert into tb1 values (2,'Huang Rong',19,'Female','Emen');

   mysql&gt; insert into tb1 values (3,'Lu Wushaung',18,'Female','Hengshan');

   mysql&gt; insert into tb1 values (4,'Zhu Ziliu',52,'Male','Kongdong');

   mysql&gt; insert into tb1 values (5,'Chen Jialuo',22,'Male','Shaolin');

   至此tb1表所有内容都存在了,可以檢視一下:

<a target="_blank" href="http://blog.51cto.com/attachment/201308/135521557.png"></a>

2、完成如下操作

(1)找出性别為女性的所有人;

   mysql&gt; SELECT name FROM tb1 WHERE Gender='Female';

(2)找出年齡大于20的所有人;

mysql&gt; SELECT name FROM tb1 WHERE Age&gt;20;

(3)修改Zhu Ziliu的Course為Wudang;

   mysql&gt; UPDATE tb1 SET Course='Wudang' WHERE name='Zhu Ziliu';

(4)删除年齡小于等于19歲的所有人;

   mysql&gt; DELETE FROM tb1 WHERE Age&lt;=19;

(5)建立此表及所屬的庫;

(6)授權給testuser對testdb庫有所有通路權限;

   mysql&gt; GRANT ALL ON testdb.* TO 'testuser'@'%';

 mysql&gt;DROP TABLE tb1;删除表tb1

本文轉自 宋鵬超 51CTO部落格,原文連結:http://blog.51cto.com/qidian510/1282064,如需轉載請自行聯系原作者

繼續閱讀