RHEL6平台上安裝Mysq資料庫—二進位版

來源:互聯網
上載者:User

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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.