1、Mysql的安裝方式
Mysql的是一種平台無關的開源關係型資料庫,安裝Mysql資料庫可以採用rpm的方式進行安裝部署,同時也是最簡單的,但是對於rpm版的安裝方式,Mysql資料庫的功能都已經固定,而且版本也不是最新,如果希望安裝最新版的Mysql資料庫以,可以採用二進位和原始碼編譯的方式進行,以下對三種方式做簡短的對比:
安裝方式
|
優點
|
缺點
|
rpm
|
安裝、查詢、卸載、配置都很方便
|
版本不是最新,功能已經固定死
|
二進位
|
安裝速度快,版本更新速度快
|
配置較麻煩,只能針對特定平台
|
原始碼
|
安裝和配置最靈活,功能自訂
|
編譯時間較久,配置較困難
|
2. 安裝和配置二進位Mysql資料庫
安裝二進位的Mysql資料庫之前,檢查系統中是否安裝了rpm版的軟體包,可以使用rpm -q mysql-server mySQL 查詢,如果已經安裝請將其先刪除,刪除的方式可以使用rpm -e mysql-server mysql或者使用yum -y remove mysql-server mysql刪除。
1. 擷取二進位的Mysql資料庫軟體包,可以到官網http://dev.mysql.com/downloads/mysql/下載對應的二進位原始碼包,本文下載的mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz,下載之前,先切換到/usr/local/src目錄下,將原始碼放置到該目錄下是一種良好的習慣:
[root@station254 ~]# cd /usr/local/src/ 切換到存放原始碼包的目錄下
|
[root@station254 src]# wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz 下載
|
2. 解壓並配置、複製資料到mysql的工作目錄
解壓並進入到該目錄下: x表示解壓,v顯示詳細過程,z調用gzip解壓縮,f表示一個普通檔案
[root@station254 src]# tar -xvzf mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz 解包並解壓縮
|
[root@station254 src]# cd mysql-5.6.14-linux-glibc2.5-x86_64 進入解壓縮所在目錄
|
二進位的原始碼包已經配置、編譯、編譯安裝完畢,直接使用即可,將其安裝到/usr/local/mysql目錄下
[root@station254 mysql-5.6.14-linux-glibc2.5-x86_64]# mkdir /usr/local/mysql 建立目錄 [root@station254 mysql-5.6.14-linux-glibc2.5-x86_64]# cp -R * /usr/local/mysql/ 複製
[root@station254 mysql]# chown -R root:root /usr/local/mysql/ 修改許可權,確保root使用者具有控制的許可權 |
3.初始化資料庫,二進位的mysql資料庫,預設初始化到/usr/local/mysql/data目錄下
[root@station254 ~]# cd /usr/local/mysql/ [root@station254 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/ 執行初始化資料庫操作
|
注意:必須是在mysql的主目錄下執行mysql_install_db指令,否則無法執行成功,執行成功之後會在/usr/local/mysql/data目錄下建立兩個預設的資料庫:mysql和test資料庫,前者用於存放mysql相關的資料庫資訊,後這是一個空的資料庫,沒有任何錶存在!
4. 建立mysql的設定檔,設定檔可以存放在/etc/my.cnf,也可以放置在/usr/local/mysql/my.cnf下,本文採用後者
[root@station254 ~]# vim /usr/local/mysql/my.cnf 修改內容如下: [mysqld] 伺服器端容器配置 datadir=/usr/local/mysql/data 資料所在目錄 port=3306 監聽連接埠號碼,預設是TCP的3306號連接埠 user=mysql 使用mysql使用者的身份啟動 error-log=/usr/local/mysql/data/mysqld.log 錯誤記錄檔存放路徑 pid-file=/usr/local/mysql/mysqld.pid pid檔案存放路徑 socket=/usr/local/mysql/data/mysqld.sock socket檔案所在路徑
[client] 用戶端配置容器 port=3306 socket=/usr/local/mysql/data/mysqld.sock
|
5. 複製啟動指令碼到/etc/init.d/目錄下
[root@station254 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 複製啟動指令碼並重新命名
[root@station254 ~]# vim /etc/init.d/mysqld 修改啟動指令碼,修改如下內容: basedir=/usr/local/mysql mysql的基本目錄,存放有設定檔等相關庫檔案,預設修改也可以 datadir=/usr/local/mysql/data mysql資料庫所在目錄,預設不修改也可,不是預設的路徑則需要修改
conf=/usrlocal/mysql/my.cnf 在224行,預設在/etc/my.cnf,修改為/usr/local/mysql/my.cnf
|
6. 啟動mysql資料庫,如果失敗則檢驗日誌,校正設定檔是否正確
[root@station254 ~]# service mysqld start 啟動mysql資料庫
[root@station254 ~]# netstat -antupl | grep mysqld 查看監聽連接埠,預設是TCP的3306號連接埠 tcp 0 0 :::3306 :::* LISTEN 8328/mysqld
查看進程狀況: [root@station254 ~]# ps aux | grep mysqld root 8147 0.0 0.0 11392 1424 pts/0 S 13:01 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysqld.pid mysql 8328 0.4 5.6 1011204 449268 pts/0 Sl 13:01 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/mysqld.log --pid-file=/usr/local/mysql/data/mysqld.pid --socket=/usr/local/mysq/dat/mysqld.sock --port=3306
|
3. 用戶端測試
二進位的mysql軟體包提供了伺服器端和用戶端的相關工具,存放在/usr/local/mysql/bin目錄下,常見的有mysql、mysqld、mysqldump等工具,系統預設的尋找命令的路徑記錄在$PATH這個特殊變數之中,如果要調用用戶端可以通過輸入絕對路徑如/usr/local/mysql/bin/mysql的方式使用,或者添加/usr/local/mysql/bin路徑到$PATH變數中。
[root@station254 ~]# /usr/local/mysql/bin/mysql 如果登入不了則使用-S指定socket檔案的所在路徑 Welcome to the MySQL monitor. Commands end with ; or \g Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
這樣的登入方式很不方便,可以修改$PATH變數的值: [root@station254 ~]# PATH=$PATH:/usr/local/mysql/bin/ [root@station254 ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/usr/local/mysql/bin/
上述的修改方式是零時生效,要永久生效則需要寫入到設定檔內: [root@station254 ~]# vim ~/.bash_profile PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
使之永久生效,可以使用source命令: [root@station254 ~]# source ~/.bash_profile [root@station254 ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/usr/local/mysql/bin/
|
注意: 如果在設定檔中沒有配置[client]配置中的socket欄位,則可能需要在登入的時候指定socket檔案所在的路徑,此外,也可能在登入的時候會到/tmp下找socket檔案,解決方案是:為socket檔案建立軟連結,連結到/tmpmysql.sock。
4. 使用常用的工具進行測試:
1. 登入mysql伺服器
[root@station254 ~]# mysql 已經配置好PATH,所以可以直接輸入mysql用戶端登入 Welcome to the MySQL monitor. Commands end with ; or \g. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
|
2. 設定root登入的密碼
[root@station254 ~]# mysqladmin -u root password 'redhat' 設定root使用者的密碼為redhat |
3. 使用新的設定的密碼登入
[root@station254 ~]# mysql -u root -predhat |
4、查看資料庫
mysql> show databases; +--------------------+ | Database | 預設建立了4個資料庫 +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.01 sec) |
5. 建立資料庫,資料庫是存放表的基礎
mysql> create database example; Query OK, 1 row affected (0.00 sec)
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | example | 建立了一個資料庫,名為example,此時資料庫中不存放有任何的表 | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec)
|
6. 使用資料庫,要操縱資料庫中的表,首先必須先要選中資料庫,才能操縱資料庫下的表
mysql> use example; Database changed
|
7. 查看資料庫中的表,資料庫是由多個表構成,表是一個對象的實體
mysql> show tables; 剛建立的資料庫,裡面沒有任何的表 Empty set (0.00 sec) |
8. 建立資料表,建立實際上是聲明列的過程,即是表有那些列,這些類是什麼屬性,以及需要對這些列做什麼約束
mysql> create table test( -> id int, -> name char(20), -> sex enum('m','w'), -> age tinyint unsigned, -> primary key(id));
建立了一張test表,共有四個欄位:id、name、sex、age,表示編號,姓名,性別,年齡,使用了整形,字元型資料類型,以及主鍵約束。
|
9. 查看錶的結構
mysql> desc test; +-------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | 0 | | | name | char(20) | YES | | NULL | | | sex | enum('m','w') | YES | | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | +-------+---------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
同行以上方式能夠清晰顯示出表的結構,包括資料類型,約束,以及預設值,是否為主鍵等。
另外一種查看錶的結構方式: mysql> show create table test; +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test | CREATE TABLE `test` ( `id` int(11) NOT NULL DEFAULT '0', `name` char(20) DEFAULT NULL, `sex` enum('m','w') DEFAULT NULL, `age` tinyint(3) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
通過上面的查看方式,能夠知道建立表的時候還需要添加很多額外的資訊,如引擎、字元編碼、預設的值等。
|
10、刪除表的操作:
mysql> drop table test; Query OK, 0 rows affected (0.13 sec)
|
11. 刪除資料庫
mysql> drop database example; Query OK, 0 rows affected (0.00 sec)
|
12. 授予一個普通使用者訪問的許可權
授予許可權的命令十grant,其文法結構如下: grant permission on database_name.table_name to 'username'@'IP' identified by 'password';
其中: permission表示許可權,如增刪改查,ALL表示所有許可權
database_name表示資料庫的名稱,*表示所有的資料庫 table_name表示表的名稱,*表示資料庫中的所有表 username表示要授予的使用者名稱 IP表示用戶端登入的IP地址 password表示給使用者所設定的密碼
如下建立一個redhat使用者,密碼也為redhat,允許從本機登入: mysql> grant all on *.* to 'redhat'@'localhost' identified by 'redhat'; Query OK, 0 rows affected (0.01 sec)
建立好使用者之後,儲存在mysql.user表中: mysql> select User,Host,Password from mysql.user; +--------+------------------------+-------------------------------------------+ | User | Host | Password | +--------+------------------------+-------------------------------------------+ | root | localhost | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | | root | station254.example.com | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | station254.example.com | | | redhat | localhost | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | 成功建立使用者 +--------+------------------------+-------------------------------------------+ 7 rows in set (0.00 sec)
|
13. 重新整理使用者的許可權表
上面所建立的使用者,此時還不能登入,需要重新整理許可權表,讓mysql讀取到對應的資訊: mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
用戶端登入測試: [root@station254 ~]# /usr/local/mysql/bin/mysql -u root -predhat -h localhost
|
5、mysql位元據庫的安裝指令碼:
#!/bin/bash #該指令碼用於安裝和配置mysql二進位軟體包
#檢查網路的聯通性,網路不通則退出安裝步驟並提示 /bin/ping -c 1 www.mysql.com &>/dev/null if [ $? -ne 0 ];then echo "您的網路環境有問題,請校正!" exit 0 fi
#網路環境沒問題則下載對應的二進位mysql軟體包 cd /usr/local/src;ls mysql-5.6.14-linux* &>/dev/null || /usr/bin/wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz &>/dev/null if [ $? -ne 0 ];then echo "下載mysql二進位軟體包失敗,請檢查!" exit 0 fi
#解壓並複製所需的檔案到mysql主目錄中 /bin/tar -xf mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz && cd mysql-5.6.14-linux-glibc2.5-x86_64 test -z /usr/local/mysql || mkdir /usr/local/mysql && cp -R * /usr/local/mysql /bin/chown -R root:root /usr/local/mysql
#初始化資料庫 cd /usr/local/mysql && ./scripts/mysql_install_db --user=mysql &>/dev/null if [ $? -ne 0 ];then echo "初始化mysql資料庫失敗,請檢查!" exit 0 fi
#設定設定檔 /bin/cat >/usr/local/mysql/my.cnf <<EOF [mysqld] datadir = /usr/local/mysql/data user = mysql port = 3306 log-error = /usr/local/mysql/data/mysqld.log pid-file = /usr/local/mysql/data/mysqld.pid socket = /usr/local/mysql/data/mysqld.sock
[client] port = 3306 socket = /usr/local/mysql/data/mysqld.sock EOF
#拷貝啟動的指令碼 cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld >/dev/null 2>&1 /sbin/service mysqld start >/dev/null 2>&1 if [
#拷貝啟動的指令碼 cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld >/dev/null 2>&1 /sbin/service mysqld start >/dev/null 2>&1 if [ $? -eq 0 ];then echo "恭喜您,成功配置二進位版mysql資料庫,請使用mysql用戶端登入!" else echo "抱歉,您的二進位mysql資料庫配置有問題,請檢查!" fi
|
總結: 本文主要講述了mysql資料庫二進位的安裝、配置、使用的方式,二進位相對rpm包的安裝方式而言,版本更新較快,同時需要手動修改設定檔,以滿足要求,同時通過一個指令碼來實現mysql二進位的安裝和配置。
|
本文出自 “linux伺服器” 部落格,請務必保留此出處http://573302346.blog.51cto.com/1730296/1301466