centos安裝mysql

linux系統CentOS7
到http://mirrors.sohu.com/mysql/下載想要的mysql版本
這裏用到的是
mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz
用 WinSCP上傳到指定的目錄下,這裏是
/usr/local/src


也可以直接在shell端提要供下載文件的詳細url用wget命令下載到指定文件夾內
wget是一個從網絡上自動下載文件的自由工具,它支持HTTP、HTTPS和FTP協議。
-c         : 接着下載沒下載完的文件,允許斷點續傳,對應的詳細參數名是 --continue
-P         : 將文件保存到指定目錄,對應的詳細參數名是 --directory-prefix
--progress : 沒有參數名縮寫格式,指定下載進度條的形式有 dot 和 bar(默認)兩種
wget -c http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz -P /usr/local/src --progress=bar
或者詳細參數名方式
wget --continue http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz --directory-prefix=/usr/local/src --progress=bar




/usr/local/src是用戶存放源碼程序的位置
但其實這一版mysql不需要cmake再make和make install編譯源代碼安裝,直接安裝即可




shell端
下面執行安裝mysql_install_db時需要先安裝perl-Module-Install.noarch
yum install -y perl-Module-Install.noarch




以絕對路徑創建文件夾(此步可省略)
mkdir創建文件夾,稍後用來存放要安裝的mysql
-m : 對新建目錄設置存取權限
-p : 此時若路徑中的某些目錄尚不存在,系統將自動建立好那些尚不存在的目錄
mkdir -m777 -p /usr/local/mysql




進入到安裝包目錄
cd /usr/local/src




解壓縮文件到當前文件夾
tar備份,壓縮與解壓縮,Linux命令,也是一個工具
-z            : 表示 tar 包是被 gzip 壓縮過的,所以解壓時需要用 gunzip 解壓
-x            : 從 tar 包中把文件提取出來
-v            : 顯示詳細信息
-f xxx.tar.gz : 指定被處理的文件是 xxx.tar.gz
tar.gz的用tar zxvf解壓,tar.bz2的用tar jxvf解壓
tar -zxvf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz




跳到上一級(此步可省略)
cd ../




將mv /usr/local/src/下的mysql-5.6.26-linux-glibc2.5-x86_64移動到/usr/local/下並重命名爲mysql
mv既可以重命名,又可以移動文件或文件夾,名前面無目錄則只在當前目錄下改名(其實相當移動覆蓋)
當不清楚當前目錄下文件結構時可輸入ls獲得,ls -all更詳細的文件結構包括各文件權限
mv /usr/local/src/mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/mysql




=============================================================================================
新建組mysql加入系統,爲mysql服務添加組和用戶,建立用戶和組爲了安全起見,不讓mysql服務操作本身用到的文件以外的文件,所以最好新建linux用戶安裝mysql
groupadd mysql




增加mysql這個用戶,作爲系統賬號,同時添加到mysql組理,主目錄是/usr/local/mysql
useradd命令用來建立用戶帳號和創建用戶的起始目錄,該命令使用權限是終極用戶。新建用戶密碼爲空
-g : 指定用戶所屬的起始羣組。
-d : 指定用戶登入時的啓始目錄。
-s : 指定用戶登入後所使用的shell。-s /sbin/nologin 是不讓登錄shell
-g後第一個mysql是組名,第二個mysql是新建的用戶名,新建用戶信息可在/etc/passwd文件中查到
useradd -r -g mysql mysql -d /usr/local/mysql




設置mysql用戶的密碼,設置密碼時輸入的密碼不可見,這裏設爲123456,回車確認
passwd mysql




將/usr/local/mysql目錄下歸屬到mysql用戶及mysql組
chown 命令 更改某個文件或目錄的屬主和屬組。
-R : 遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者。
-v : 顯示chown命令所做的工作。
mysql:mysql,第一個mysql是用戶名,第二個mysql是組名
chown -R mysql:mysql /usr/local/mysql




由當前用戶切換到mysql用戶
su 用戶名,是切換到其他用戶,但是不切換環境變量
su - 用戶名,是完整的切換到一個用戶環境
su mysql




退出su mysql用戶
exit
=============================================================================================




安裝數據庫,也可以把該步驟放在上面的su mysql與exit之間執行
--user : 所指定的用戶是想要運行mysqld進程用戶名。這個是可變的,不一定非要是mysql。設置這個用戶以後,所有通過mysqld進程創建的文件都會屬於這個用戶。網上的教程裏多用mysql用戶是爲了在生產環境中更方便管理。
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如果執行上面語句出現libaio.so.1錯誤執行安裝庫即可

解決方式
執行:yum install -y libaio 



進入mysql配置文件目錄
cd /usr/local/mysql/support-files




複製mysql服務啓動配置文件到/etc/下並重命名爲my.cnf,/etc/my.cnf如存在則輸入y和回車覆蓋
配置文件,如果沒有的話,mysql所有的參數將會是默認值
cp my-default.cnf /etc/my.cnf




將mysql加入到可控制啓動的服務的文件夾內,並命名mysql,即service可控制的服務名,至此可用service mysql start控制啓動mysql
/etc/init.d 是/etc/rc.d/init.d的鏈接,在/etc/init.d添加一個文件會同步在/etc/rc.d/init.d下添加一個相同文件
cp mysql.server /etc/init.d/mysql




修改自啓動調用的路徑。其實若mysql的安裝目錄是/usr/local/mysql,則可省略此步
vim編輯器,是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在裏面
進入後按鍵盤i進行編輯,修改如下倆值
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
編輯後按esc鍵輸入:wq按回車保存。:q!是不保存退出
vim /etc/init.d/mysql




讓mysql服務加入到開機啓動指令管理的服務列表中
chkconfig命令主要用來更新(啓動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接
--add : 增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啓動的敘述文件內增加相關數據。服務腳本必須存放在/etc/ini.d/目錄下
chkconfig --add mysql




開機自啓動mysql服務
on : 針對的服務有等級限制,具體查詢chkconfig詳細
chkconfig mysql on




配置環境變量,這個文件是每個用戶登錄時都會運行的環境變量設置
在最下面添加下面兩個值
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
然後保存
vim /etc/profile




讓修改的profile文件立即生效
. /etc/profile




啓用mysql,或者命令systemctl start mysql
service mysql start




設置mysql的root用戶密碼,此處設成123456,此root用戶與linux不是一個
mysqladmin -u root password '123456'




登陸mysql,用剛纔設置的密碼
mysql -u root -p




允許使用用戶名root密碼123456從任何主機連接到mysql服務器
該創建的root賬號只是從外部訪問的賬號,與內部linux訪問該mysql時所用root不同,內部linux訪問該mysql的root賬號也不是linux的系統root賬號
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;




刷新權限
mysql>FLUSH PRIVILEGES;




退出mysql
mysql>exit;




開啓防火牆mysql3306端口的外部訪問
CentOS升級到7之後,使用firewalld代替了原來的iptables。下面記錄如何使用firewalld開放Linux端口
--zone      : 作用域,網絡區域定義了網絡連接的可信等級。這是一個一對多的關係,這意味着一次連接可以僅僅是一個區域的一部分,而一個區域可以用於很多連接
--add-port  : 添加端口與通信協議,格式爲:端口/通訊協議,協議是tcp 或 udp
--permanent : 永久生效,沒有此參數系統重啓後端口訪問失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent




重啓防火牆
firewall-cmd --reload










附一:
CentOS7棄用以前的iptables使用firewall做防火牆,如果要嘗試之前防火牆修改開放端口方式可以關閉firewall,安裝以前的iptables


停止firewall,與之對應的是開啓。systemctl start firewalld
systemctl stop firewalld


禁止firewall開機啓動
systemctl disable firewalld


安裝iptables-services
yum install iptables-services


打開iptables的配置文件
vi文本編輯器
輸入以下內容後保存
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
如果配置文件中已有內容則只需添加要打開的端口號即可,添加如下行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
添加打開的端口號一定在-A INPUT -j REJECT --reject-with icmp-host-prohibited和-A FORWARD -j REJECT --reject-with icmp-host-prohibited之前
vi /etc/sysconfig/iptables


:wq! #保存退出後重啓,對應的開始命令是systemctl start iptables
systemctl restart iptables


設置iptables防火牆開機啓動
systemctl enable iptables








附二:
忘記root密碼後,如何更改密碼
停止mysql服務,或者命令systemctl stop mysql
service mysql stop


進入/usr/local/mysql
cd $MYSQL_HOME


通過mysqld_safe啓動mysql,並且啓動mysql時不啓動grant-tables授權表
./bin/mysqld_safe --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --skip-grant-tables &


登陸mysql
mysql -u root mysql


修改root密碼
mysql>UPDATE user SET password=PASSWORD("new_password") WHERE user='root';


刷新
mysql>FLUSH PRIVILEGES;


退出mysql
mysql>exit;








附三:
firewall防火牆默認的幾個zone(由firewalld 提供的區域按照從不信任到信任的順序排序):


drop
任何流入網絡的包都被丟棄,不作出任何響應,只允許流出的網絡連接。即使開放了某些服務(比如http),這些服務的數據也是不允許通過的。


block
任何進入的網絡連接都被拒絕,並返回 IPv4 的 icmp-host-prohibited 報文或者 IPv6 的 icmp6-adm-prohibited 報文。只允許由該系統初始化的網絡連接。


public(默認)
用以可以公開的部分。你認爲網絡中其他的計算機不可信並且可能傷害你的計算機,只允許選中的服務通過。


external
用在路由器等啓用僞裝的外部網絡。你認爲網絡中其他的計算機不可信並且可能傷害你的計算機,只允許選中的服務通過。


dmz
用以允許隔離區(dmz)中的電腦有限地被外界網絡訪問,只允許選中的服務通過。


work
用在工作網絡。你信任網絡中的大多數計算機不會影響你的計算機,只允許選中的服務通過。


home
用在家庭網絡。你信任網絡中的大多數計算機不會影響你的計算機,只允許選中的服務通過。


internal
用在內部網絡。你信任網絡中的大多數計算機不會影響你的計算機,只允許選中的服務通過。


trusted
允許所有網絡連接,即使沒有開放任何服務,那麼使用此zone的流量照樣通過(一路綠燈)。








附四:
下面兩種命令作用相同
systemctl [stop|start|restart] 服務名
service 服務名 [stop|start|restart]








附五:
以下其餘四個GRANT例子
給來自192.168.155.1的用戶user1分配可對數據庫dbname的tablename表進行SELECT,INSERT,UPDATE,DELETE,CREATE,DROP等操作的權限,並設定密碼爲123456。
對錶操作權限還有好多如ALTER等
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON dbname.tablename TO 'user1'@'192.168.155.1' IDENTIFIED BY '123456';


給來自192.168.155.1的用戶user2分配可對數據庫dbname所有表進行所有操作的權限,並設定口令爲123456。
mysql>GRANT ALL PRIVILEGES ON dbname.* TO 'user2'@'192.168.155.1' IDENTIFIED BY '123456';


給來自192.168.155.1的用戶user3分配可對所有數據庫的所有表進行所有操作的權限,並設定口令爲123456。
mysql>GRANT ALL PRIVILEGES ON *.* TO 'user3'@'192.168.155.1' IDENTIFIED BY '123456';


給本機用戶user4分配可對所有數據庫的所有表進行所有操作的權限,並設定口令爲123456。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'user4'@'localhost' IDENTIFIED BY '123456';


附六:


第一條設置linux下卻分數據表大小寫問題

 1.ROOT登錄,修改/etc/my.cnf

  2.[mysqld]下加入一行:lower_case_table_names=1

  3.重新啓動數據庫即可。


第二條設置數據庫編碼格式爲utf8

[mysqld]下加入一行:character-set-server=utf8   重新啓動數據庫即可。



轉自:http://www.cnblogs.com/dreamhome/p/4716425.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章