Linux 下安裝mysql 8.0.11(CentOS 7.4 系統)

來源:互聯網
上載者:User

標籤:沒有   寫入   全域   mysql8   語句   驗證方式   訪問   reload   driver   

CentOS 7 內建MariaDB (前mysql開發工程師開發的,因此與嗎,mysql 有很多相似之處)

1、檢查卸載內建的MariaDB

  rpm -qa|grep mariadb //查詢出來已安裝的mariadb

  rpm -e --nodeps 檔案名稱 //卸載mariadb,檔案名稱為上述命令查詢出來的檔案

 

2、查看是否已經安裝了mysql

  rpm -qa | grep -i mysql

 

  尋找mysql檔案,使用rm -rf mysql檔案路徑刪除

  find / -name mysql

 

  刪除分散mysql檔案

  find / -name mysql / # whereis mysql

 

  刪除配置文檔

  rm -rf /etc/my.cnf

 

  再次尋找機器是否安裝mysql

  rpm -qa|grep -i mysql

  

      查看yum 庫提供的mysql 資源

  yum list mysql*

  

3、安裝mysql依賴包

  yum -y install openssl-devel

  yum install perl-JSON

  安裝mysql 必要的依賴 libnuma.so.1 依賴需要安裝 libnuma

 建議使用yum方式,免得缺少依賴
 用yum方式安裝libnuma

  yum install numactl -y

  yum install libaio -y

  yum install perl -y

  yum -y install  libaio-devel

 

  yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6

  yum update libstdc++-4.4.7-4.el6.x86_64

  yum search libaio # 檢索相關資訊

  yum install libaio # 安裝依賴包

  yum install net-tools

 

4、到mysql 官網下載通用包,也可下載原碼編譯,這圖簡單就直接下載編譯好的通用包

用wget 下載

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz #解壓後是編譯完的包

或wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar   #解壓後是rpm包

解壓下載的壓縮包到/usr/local/下的mysql目錄內(mysql目錄手動建立,mkdir mysql)

  tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql

  

 

或者先解壓在移動到指定目錄

  tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz     #解壓

  mv /root/mysql-8.0.11-linux-glibc2.12-i686  /usr/local/mysql       #移動並重新命名檔案

 

5、tar包解壓後(rpm 安裝方式),在/usr/local/mysql下安裝mysql,注意安裝有先後,有依賴關係

rpm -ivh …common.rpm rpm -ivh …libs.rpm rpm -ivh …client.rpm rpm -ivh …server.rpm 安裝完成後會產生如下目錄,用於儲存mysql相關檔案 clip_image002 ......rpm 安裝參考:https://www.jb51.net/article/138787.htm  6、tar.gz 解壓的編譯包安裝參考:80144890#commentBoxhttps://www.linuxidc.com/Linux/2018-04/152039.htm  6.1、在mysql根目錄下建立一個檔案夾data,用於存放資料

mkdir data

6.2、建立 root使用者組和 root使用者,一般系統已經存在root組和root使用者,可以選擇建立其他的使用者和組

groupadd root

useradd -g root root

 

6.3、配置my.cnf檔案

 

在/etc/目錄下建立my.cnf 設定檔

   touch my.cnf

 

   其他參數根據情況來配置;

  my.cnf最佳化參考資料:https://www.cnblogs.com/langdashu/p/5889352.html

  https://www.cnblogs.com/mydriverc/p/8297144.html

  https://www.cnblogs.com/panwenbin-logs/p/8360703.html

 

  其中不存在的目錄和記錄檔需要先建立不然會報無法建立的許可權錯誤

 

6.4.改變 mysql 目錄許可權

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

僅所屬使用者擁有許可權

chmod 755 /usr/local/mysql -R 

全部使用者都有選項

chmod 777/usr/local/mysql -R 

 

或者

chown -R mysql .

chgrp -R mysql .

注意最後有一點

 

 

7、初始化資料庫

在mysql目錄下

./bin/mysqld --initialize --user=root --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

 ./bin/mysql_ssl_rsa_setup

 

產生的臨時密碼為 iTUlu+,Gz5;3

 

8、建立mysql 服務

添加到系統服務

cp -a ./support-files/mysql.server /etc/init.d/mysqld

或者

cp -v ./support-files/mysql.server /etc/init.d/

 

添加執行許可權(選做)

chmod +x /etc/rc.d/init.d/mysqld    

 

增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述檔案內增加相關資料。

chkconfig --add mysqld

 

檢查服務是否生效  

chkconfig  --list mysqld

或 chkconfig  --list  查看所有服務

 

 

 

9. 配置全域環境變數

編輯 / etc/profile 檔案

vim /etc/profile

在 profile 檔案底部添加如下兩行配置,儲存後退出

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

export PATH

 注意:PATH這一定要根據自己的安裝位置來配置,我之前就是這沒注意直接參考其他人填寫了個錯誤的地址"/data/mysql/bin:/data/mysql/lib:$PATH",之後一直報錯

設定環境變數立即生效

 source /etc/profile

10.啟動MySQL服務

./mysqld --defaults-file=/etc/my.cnf --user=root & (可選執行)

systemctl start mysql.service (標準啟動服務方式)

( 關閉方法為 service mysql.server stop
service mysql.server {start|stop|restart|reload|force-reload|status})

 

檢查服務是否啟動

inux上面:service mysql status查看是否啟動,或者netstat -tlunp|grep 3306
windows上面:在“cmd”命令列裡面輸入“ netstat -an|find "3306",如果有這個說明開啟了。

 

其中 mysql.server.service 服務為綠色狀態,表示開啟成功,如果不是就要去查看系統錯誤記錄檔和服務的日誌來排查了

 

11、登入mysql

  11.1、執行命令,登入mysql

  mysql -u root -p

       輸入 之前初始化得到的密碼

 

  11.2進入mysql 之後,必須要進行初始密碼的重設才能進行其他動作

  更新密碼

  ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘新密碼‘; #以預設密碼認證外掛程式來驗證密碼

  ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘新密碼‘; #以指定的密碼驗證方式來驗證密碼

 

  設定檔my.cnf中 default_authentication_plugin 預設密碼認證方式,因為當前有很多資料庫工具和連結包都不支援“caching_sha2_password”,

  這為了方便改為之前的認證方式

  default_authentication_plugin=mysql_native_password

   

  在mysql 8.04 之前可以通過執行: SET  PASSWORD = PASSWORD ( ‘[修改的密碼]‘ ); 來修改密碼。  但是MySQL8.0.4開始,這樣是不行的。因為之前,MySQL的密碼認證外掛程式是“mysql_native_password”,mysql 8.04 之後使用的是“caching_sha2_password”。

   

  11.3、查看mysql 基本資料

  mysql 清屏命令 system clear;

  

  

   

11.4、建立允許遠端管理的使用者

  管理員root的host是localhost,代表僅限localhost登入訪問。如果要允許開放其他ip登入,則需要添加新的host。如果要允許遠程ip訪問,可以直接修改成“%”,但這樣會導致本地無法串連。

  因此最好建立允許遠端連線的系統管理使用者。

  建立使用者:

    CREATE USER ‘zw‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘密碼‘;

  #(需要注意:mysql8.04後加密方式修改了)
  #檢查使用者

    select user, host, plugin, authentication_string from user\G;

    #查詢語句 \G 結尾表示格式化輸出

  

  賦予許可權

  #授權所有許可權 
    GRANT ALL PRIVILEGES ON *.* TO ‘zw‘@‘%‘;
  #授權基本的查詢修改許可權,按需求設定
    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO ‘baseroot‘@‘%‘;

 

  grant all privileges on *.* to ‘使用者‘@‘%‘ identified by ‘密碼‘ with grant option;

  • all privileges:表示將所有許可權授予給使用者。也可指定具體的許可權,如:SELECT、CREATE、DROP等。
  • on:表示這些許可權對哪些資料庫和表生效,格式:資料庫名.表名,這裡寫“*.*”表示所有資料庫,所有表。如果我要指定將許可權應用到test庫的user表中,可以這麼寫:test.user
  • to:將許可權授予哪個使用者。格式:”使用者名稱”@”登入IP或網域名稱”。%表示沒有限制,在任何主機都可以登入。比如:”zw”@”192.168.0.%”,表示zw這個使用者只能在192.168.0IP段登入
  • identified by:指定使用者的登入密碼
  • with grant option:表示允許使用者將自己的許可權授權給其它使用者

  可以使用GRANT給使用者添加許可權,許可權會自動疊加,不會覆蓋之前授與權限,比如你先給使用者添加一個SELECT許可權,後來又給使用者添加了一個INSERT許可權,那麼該使用者就同時擁有了SELECT和INSERT許可權。

  使用者詳情的許可權列表請參考MySQL官網說明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html 

 

   #重新整理許可權:

  對使用者做了許可權變更之後,一定記得重新載入一下許可權,將許可權資訊從記憶體中寫入資料庫。

  mysql> flush privileges;

 

  查看使用者權限
    show grants for ‘zw‘@‘%‘;

  

12、防火牆操作

  把 3306 連接埠添加進防火牆

  #檢查連接埠佔用情況

   netstat -lnp | grep 3306

  #查看是否開啟防火牆

  systemctl status firewalld.serivce

  #開啟防火牆

  systemctl start firewalld.serivce

  #查看防火牆已開放的連接埠號碼

  firewall-cmd --list-ports

  #添加連接埠進防火牆

  firewall-cmd --permanent --zone=public --add-port=3306/tcp

  #重新載入防火牆

  firewall-cmd --reload

  #重啟防火牆服務(選做)

  systemctl restart firewalld.service

  

 

  firewall-cmd --zone=public --add-port=80/tcp --permanent

  

  centos7中的防火牆改成了firewall,使用iptables無作用,開放連接埠的方法如下:

  firewall-cmd --zone=public --add-port=80/tcp --permanent

  返回success為成功

  

  命令含義: 

  --zone #範圍 

  --add-port=80/tcp #添加連接埠,格式為:連接埠/通訊協議 

  --permanent #永久生效

  

  重啟防火牆:

  systemctl restart firewalld.service 

  

  關閉防火牆:

  systemctl stop firewalld.service 

 

  查看監聽(Listen)的連接埠

  netstat -lntp

  

  檢查連接埠被哪個進程佔用

  netstat -lnp|grep 8080

    

  查看已開發的連接埠

  firewall-cmd --list-ports 

  

  根據連接埠號碼得到其佔用的進程的詳細資料

  netstat -tlnp|grep 80
  tcp        0      0 192.168.33.10:80            0.0.0.0:*                   LISTEN      5014/httpd
  tcp        0      0 0.0.0.0:48054               0.0.0.0:*                   LISTEN      5386/java

  

  一次性的清除佔用80連接埠的程式

  lsof -i :80|grep -v "PID"|awk ‘{print "kill -9",$2}‘|sh

 

  手工終止進程的運行

  kill 5014
  如果終止不了,可以強制終止
  kill -9 5014

  

  

  啟動一個服務:systemctl start firewalld.service

  關閉一個服務:systemctl stop firewalld.service

  重啟一個服務:systemctl restart firewalld.service

  顯示一個服務的狀態:systemctl status firewalld.service

  在開機時啟用一個服務:systemctl enable firewalld.service

  在開機時禁用一個服務:systemctl disable firewalld.service

  查看服務是否開機啟動:systemctl is-enabled firewalld.service

  查看已啟動的服務列表:systemctl list-unit-files|grep enabled

  查看啟動失敗的服務列表:systemctl --failed

  

常用命令

firewall-cmd --state ##查看防火牆狀態,是否是running
firewall-cmd --reload ##重新載入配置,比如添加規則之後,需要執行此命令
firewall-cmd --get-zones ##列出支援的zone
firewall-cmd --get-services ##列出支援的服務,在列表中的服務是允許存取的
firewall-cmd --query-service ftp ##查看ftp服務是否支援,返回yes或者no
firewall-cmd --add-service=ftp ##臨時開放ftp服務
firewall-cmd --add-service=ftp --permanent ##永久開放ftp服務
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服務
firewall-cmd --add-port=80/tcp --permanent ##永久添加80連接埠
iptables -L -n ##查看規則,這個命令是和iptables的相同的
man firewall-cmd ##查看協助

 

 

自此,所有的配置均完成!

 

參考:80144890

80207918#commentBox

源碼安裝方式參考 80571961

Linux 下安裝mysql 8.0.11(CentOS 7.4 系統)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.