標籤:沒有 寫入 全域 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 系統)