天天看點

centos 上安裝與配置MySQL

說在前面
  • 工作環境:VMware® Workstation 12 Pro 12.5.6 build-5528349
  • linux版本:CentOS-7-x86_64-Minimal-1611.iso
  • MySQL版本:mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
1. 安裝MySQL
在Linux上安裝MySQL一般有兩種方式。第一種就是使用yum指令進行安裝(比較輕量,安裝包較小,但依賴多,容易出錯)。第二種方式就是通過解壓MySQL包安裝(包比較大,但是不容易出錯)。本文采用第二種方式安裝配置MySQL。
  • 下載下傳mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz,并将其放在共享目錄下(/mnt/hgfs/bigdata/soft/…)。
  • 切換到root,解除安裝自帶的 Mariadb
$> rpm -qa|grep mariadb  // 查詢出來已安裝的mariadb  
$> rpm -e --nodeps 檔案名  // 解除安裝mariadb,檔案名為上述指令查詢出來的檔案
           
  • 删除 etc目錄下的 my.cnf
$> rm /etc/my.cnf
           
  • 建立名為mysql的使用者組,建立一個名為mysql的使用者,并将該使用者加入mysql使用者組
//建立mysql使用者組
$> groupadd mysql

//建立一個使用者名為mysql的使用者并加入mysql使用者組
$> useradd -g mysql mysql
           
  • 将 mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz 複制到 /usr/local 目錄下,并解壓在目前目錄下
$> cp /mnt/hgfs/bigdata/soft/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz /usr/local

//解壓該壓縮檔案
$> tar -zxvf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz

           
  • 将解壓出來的檔案夾重命名為mysql
$> mv 解壓出來的檔案夾名 mysql
           
  • 将 /usr/local/mysql/support-files 路徑下的 my-default.cnf 檔案拷貝到 /etc 目錄下,重命名為 my.cnf
[root@s201 /usr/local/mysql]# cp my-default.cnf /etc/my.cnf 
           
  • 配置 my.cnf 檔案
[root@s201 /usr/local/mysql]# nano /etc/my.cnf

[mysql]  
# 設定mysql用戶端預設字元集  
default-character-set=utf8   
socket=/var/lib/mysql/mysql.sock
[mysqld]  
skip-name-resolve  
#設定3306端口  
port = 3306   
socket=/var/lib/mysql/mysql.sock  
# 設定mysql的安裝目錄  
basedir=/usr/local/mysql  
# 設定mysql資料庫的資料的存放目錄  
datadir=/usr/local/mysql/data  
# 允許最大連接配接數  
max_connections=200  
# 服務端使用的字元集預設為8比特編碼的latin1字元集  
18. character-set-server=utf8  
# 建立新表時将使用的預設存儲引擎  
default-storage-engine=INNODB  
lower_case_table_name=1  
max_allowed_packet=16M
user=mysql //設定使用者為mysql
           
  • 如果是centos精簡版本,可能需要安裝Perl子產品
$> yum install -y perl
$> yum install -y perl-Module-Install.noarch
           
  • 如果是centos系統,修改 /etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled,儲存退出後重新開機機器
  • 進入安裝 mysql 軟體目錄,安裝資料庫
[root@s201 ~]# cd /usr/local/mysql
[root@s201 /usr/local/mysql]# chown -R mysql:mysql ./       修改目前目錄擁有着為mysql使用者
[root@s201 /usr/local/mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
           
  • 修改目前 data目錄的擁有者為 mysql使用者
[root@s201 /usr/local/mysql]# chown -R mysql:mysql data
           
2. 配置MySQL
  • 授予 my.cnf最大權限
[root@s201 /usr/local/mysql]# chown 777 /etc/my.cnf
           
  • 複制啟動腳本到資源目錄
[root@s201 /usr/local/mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld 
           
  • 增加 mysqld 服務控制腳本執行權限
[root@s201 /usr/local/mysql]# chmod +x /etc/rc.d/init.d/mysqld
           
  • 将 mysqld 服務加入到系統服務
[root@s201 /usr/local/mysql]# chkconfig --add mysqld
           
  • 檢查 mysqld 服務是否已經生效
[root@s201 /usr/local/mysql]# chkconfig --list mysqld
           
centos 上安裝與配置MySQL
  • 在 /var/lib 下建立 mysql 檔案夾,修改權限
[root@s201 /usr/local/mysql]# mkdir /var/lib/mysql

//設定權限
[root@s201 /usr/local/mysql]# chmod 777  /var/lib/mysql
           
  • 将 mysql 的 bin 目錄加入 PATH 環境變量,編輯 ~/.bash_profile 檔案
[root@s201 /usr/local/mysql]# nano ~/.bash_profile

//在檔案最後添加如下資訊: 指定環境變量啟動程式位置
export PATH=$PATH:/usr/local/mysql/bin

//執行下面的指令是修改的内容立即生效 :
[root@s201 /usr/local/mysql]# source ~/.bash_profile
           
  • 啟動mysqld
//啟動mysql服務
[root@s201 /usr/local/mysql]# service mysqld start

//關閉mysql服務
[root@s201 /usr/local/mysql]# service mysqld stop
           
  • 以 root 賬戶登入 mysql, 預設是沒有密碼的, 要輸入密碼的時候直接回車即可
[root@s201 /usr/local/mysql]# mysql -u root -p
           

注意: mysql -u root -p 指令可能會有異常:-bash: mysql: command not found。這是因為系統在預設的指令檔案夾 /usr/bin 下沒有找到 mysql 指令,需要在此檔案夾下建一個符号連結:

[root@s201 /usr/local/mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin
           
  • 設定 root 賬戶密碼為 root
mysql>use mysql  
mysql>update user set password=password('root') where user='root' and host='localhost';  
mysql>flush privileges;  
           
  • 設定遠端主機登入,使用下面指令檢視和添加,注意下面的 your username 和 your password 改成你需要設定的使用者和密碼
檢視使用者
select Host,User,Password from mysql.user;
建立使用者
create user test identified by '123456';
配置設定權限
grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option;

//比對整個資料庫權限
grant all privileges on *.* to 'root'@'%' identified by 'root';

說明: 第一個’root’是使用者名,第二個’%’是所有的ip都可以遠端通路,第三個’123456’表示使用者密碼 如果不常用就關閉掉。

重新整理
flush privileges ;
修改指定使用者密碼
update mysql.user set password=password('新密碼') where User="test" and Host="localhost";
删除使用者
delete from user where User='test' and Host='localhost';
           
centos 上安裝與配置MySQL
centos 上安裝與配置MySQL
  • CentOS7 防火牆設定
重新開機防火牆
firewall-cmd --reload
停止防火牆
systemctl stop firewalld.service
禁止防火牆開機啟動
systemctl disable firewalld.service
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

關閉防火牆 
1) 永久性生效,重新開機後不會複原
開啟: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重新開機後複原
開啟: service iptables start
關閉: service iptables stop
           
  • 成功示例
centos 上安裝與配置MySQL
3. 問題解決
  • MySQL提示:The server quit without updating PID file

    參考:1. https://www.cnblogs.com/wangshaojun/p/5065298.html

    2. http://blog.51cto.com/fengyunshan911/2070818

  • 解決linux mysql指令 bash: mysql: command not found 的方法

    參考:https://www.cnblogs.com/jr1260/p/6590860.html

4. 說明

本文詳細參考了 https://blog.csdn.net/u013421629/article/details/79638315 文檔,在此對原作者的辛苦整理表示感謝!!!