centos7.x下環境搭建(一)--yum方式安裝mysql5.7


前兩天因為數據庫被黑客攻擊,導致數據被刪除,數據庫被損壞,系統重新安裝了一下,所以環境也需要重新再搭一遍,包括mysql、nodejs、git、nginx和redis的安裝。由於之前安裝的mysql安裝方式比較麻煩,這次使用yum的方式來安裝mysql數據庫,這篇文章記錄下mysql的安裝過程。

一、安裝之前先來了解下linux系統下目錄結構

  1. /usr: 系統級的目錄,可以理解為C:/Windows/;/usr/bin 存放應用程序;/usr/share 存放共享數據,/usr/lib 存放不能直接運行的,卻是許多程序運行所必需的一些函數庫文件,可以理解為C:/Windows/System32
    *比如Java的安裝目錄,我會放在這里。

  2. /usr/local:用戶級的程序目錄,可以理解為C:/Progrem Files/。
    用戶自己編譯的軟件默認會安裝到這個目錄下。
    *比如Hadoop,Tomcat的安裝目錄我一般會放在/usr/目錄下

  3. /opt:給主機額外安裝軟件所擺放的目錄。用戶級的程序目錄,可以理解為D:/Software,opt有可選的意思,這里可以用於放置第三方大型軟件(或游戲),當你不需要時,直接rm -rf掉即可。在硬盤容量不夠時,也可將/opt單獨掛載到其他磁盤上使用。
    *比如臨時上傳到Linux里的軟件;tar.gz rpm等文件,用作軟件倉庫。

完整的目錄結構說明:

  1. /

    這就是根目錄。對你的電腦來說,有且只有一個根目錄。所有的東西,我是說所有的東西都是從這里開始。舉個例子:當你在終端里輸入“/home”,你其實是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。

  2. /root

    這是系統管理員(root user)的目錄。對於系統來說,系統管理員就好比是上帝,它能對系統做任何事情,甚至包括刪除你的文件。因此,請小心使用root帳號。

  3. /bin

    這里存放了標准的(或者說是缺省的)linux的工具,比如像“ls”、“vi”還有“more”等等。通常來說,這個目錄已經包含在你的“path”系 統變量里面了。什么意思呢?就是:當你在終端里輸入ls,系統就會去/bin目錄下面查找是不是有ls這個程序。

  4. /etc

    這里主要存放了系統配置方面的文件。舉個例子:你安裝了samba這個套件,當你想要修改samba配置文件的時候,你會發現它們(配置文件)就在/etc/samba目錄下。

  5. /dev

    這里主要存放與設備(包括外設)有關的文件(unix和linux系統均把設備當成文件)。想連線打印機嗎?系統就是從這個目錄開始工作的。另外還有一些包括磁盤驅動、USB驅動等都放在這個目錄。

  6. /home

    這里主要存放你的個人數據。具體每個用戶的設置文件,用戶的桌面文件夾,還有用戶的數據都放在這里。每個用戶都有自己的用戶目錄,位置為:/home/用戶名。當然,root用戶除外。

  7. /tmp

    這是臨時目錄。對於某些程序來說,有些文件被用了一次兩次之后,就不會再被用到,像這樣的文件就放在這里。有些linux系統會定期自動對這個目錄進行清理,因此,千萬不要把重要的數據放在這里。

  8. /usr

    在這個目錄下,你可以找到那些不適合放在/bin或/etc目錄下的額外的工具。比如像游戲阿,一些打印工具拉等等。/usr目錄包含了許多子目錄: /usr/bin目錄用於存放程序;/usr/share用於存放一些共享的數據,比如音樂文件或者圖標等等;/usr/lib目錄用於存放那些不能直接 運行的,但卻是許多程序運行所必需的一些函數庫文件。你的軟件包管理器(應該是“新立得”吧)會自動幫你管理好/usr目錄的。

  9. /opt

    這里主要存放那些可選的程序。你想嘗試最新的firefox測試版嗎?那就裝到/opt目錄下吧,這樣,當你嘗試完,想刪掉firefox的時候,你就可 以直接刪除它,而不影響系統其他任何設置。安裝到/opt目錄下的程序,它所有的數據、庫文件等等都是放在同個目錄下面。

    舉個例子:剛才裝的測試版firefox,就可以裝到/opt/firefox_beta目錄下,/opt/firefox_beta目錄下面就包含了運 行firefox所需要的所有文件、庫、數據等等。要刪除firefox的時候,你只需刪除/opt/firefox_beta目錄即可,非常簡單。

  10. /usr/local

    這里主要存放那些手動安裝的軟件,即不是通過“新立得”或apt-get安裝的軟件。它和/usr目錄具有相類似的目錄結構。讓軟件包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下面,我想這應該是個不錯的主意。

  11. /media

    有些linux的發行版使用這個目錄來掛載那些usb接口的移動硬盤(包括U盤)、CD/DVD驅動器等等。

其他

  1. /usr/local 這個目錄一般是用來存放用戶自編譯安裝軟件的存放目錄;一般是通過源碼包安裝的軟件,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中。這個目錄下面有子目錄。自己看看吧。

  2. /usr/share 系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,/usr/share/doc和/usr/share/man幫助文件。

  3. /var/log 系統日志存放,分析日志要看這個目錄的東西;

  4. /var/spool 打印機、郵件、代理服務器等假脫機目錄;

二、mysql5.7安裝

  1. 配置YUM源
    mssql官網下載YUM源rpm安裝包
    https://dev.mysql.com/downloads/repo/yum/

下載mysql源安裝包

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安裝mysql源

yum localinstall mysql57-community-release-el7-8.noarch.rpm

檢查mysql源是否安裝成功

yum repolist enabled | grep "mysql.*-community.*"
[root@iZ2ze3bc56k6c8wubzxn9kZ opt]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64 MySQL Connectors Community                 108
mysql-tools-community/x86_64      MySQL Tools Community                       90
mysql57-community/x86_64          MySQL 5.7 Community Server                 347

看到這個表示安裝成功

  1. 安裝MySQL
    yum install mysql-community-server
  2. 啟動MySQL服務
    systemctl start mysqld
  3. 查看MySQL的啟動狀態
    systemctl status mysqld
[root@iZ2ze3bc56k6c8wubzxn9kZ opt]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2019-05-29 15:33:36 CST; 18s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 19832 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 19759 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 19837 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─19837 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

5月 29 15:33:31 iZ2ze3bc56k6c8wubzxn9kZ systemd[1]: Starting MySQL Server...
5月 29 15:33:36 iZ2ze3bc56k6c8wubzxn9kZ systemd[1]: Started MySQL Server.
  1. 設置開機啟動
systemctl enable mysqld
systemctl daemon-reload
  1. 修改root本地登錄密碼
    mysql安裝完成之后,在/var/log/mysqld.log文件中給root生成了一個默認密碼。通過下面的方式找到root默認密碼,然后登錄mysql進行修改:
grep 'temporary password' /var/log/mysqld.log
mysql -u root -p
set password for 'root'@'localhost'=password('MyNewPass4!');

注意:mysql5.7默認安裝了密碼安全檢查插件(validate_password),默認密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,並且長度不能少於8位。否則會提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements錯誤,如下圖所示:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

通過msyql環境變量可以查看密碼策略的相關信息:

show variables like '%password%';
+---------------------------------------+--------+
| Variable_name                         | Value  |
+---------------------------------------+--------+
| default_password_lifetime             | 0      |
| disconnect_on_expired_password        | ON     |
| log_builtin_as_identified_by_password | OFF    |
| mysql_native_password_proxy_users     | OFF    |
| old_passwords                         | 0      |
| report_password                       |        |
| sha256_password_proxy_users           | OFF    |
| validate_password_check_user_name     | OFF    |
| validate_password_dictionary_file     |        |
| validate_password_length              | 8      |
| validate_password_mixed_case_count    | 1      |
| validate_password_number_count        | 1      |
| validate_password_policy              | MEDIUM |
| validate_password_special_char_count  | 1      |
+---------------------------------------+--------+

修改密碼策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密碼策略

# 選擇0(LOW),1(MEDIUM),2(STRONG)其中一種,選擇2需要提供密碼字典文件
validate_password_policy=0

如果不需要密碼策略,添加my.cnf文件中添加如下配置禁用即可:

validate_password = off

重新啟動mysql服務使配置生效:

systemctl restart mysqld

默認配置文件路徑:

配置文件:/etc/my.cnf 
日志文件:/var/log//var/log/mysqld.log 
服務啟動腳本:/usr/lib/systemd/system/mysqld.service 
socket文件:/var/run/mysqld/mysqld.pid

如果忘記root密碼,則按如下操作恢復:

在[mysqld]的段中加上一句:skip-grant-tables 保存並且退出vi。

mysql  -u root

update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';

flush privileges

三、mysql創建用戶及授權

1、創建用戶

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

username:你將創建的用戶名
host:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%
password:該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器

如:

CREATE USER 'pig'@'%' IDENTIFIED BY '123456';

2、授權用戶權限

GRANT privileges ON databasename.tablename TO 'username'@'host'

privileges:用戶的操作權限,如SELECT,INSERT,DELETE,UPDATE等,如果要授予所的權限則使用ALL
databasename:數據庫名
tablename:表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用表示,如.*

GRANT SELECT, INSERT,UPDATE ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

3、撤銷用戶權限

REVOKE privilege ON databasename.tablename FROM 'username'@'host';
如
REVOKE SELECT ON *.* FROM 'pig'@'%';

4、刪除用戶

DROP USER 'username'@'host';

問題總結

1、阿里雲centos重裝系統后使用ssh連接服務器報錯

root@xxx.xxx.xxx.xx
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:yq14m7w9Vu5yse+A2w6MFwY2//NJUvBC6fIZCdYiomY.
Please contact your system administrator.
Add correct host key in /Users/wuj/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/wuj/.ssh/known_hosts:11
ECDSA host key for 39.105.195.29 has changed and you have requested strict checking.
Host key verification failed.

會出現這些信息是因為,第一次SSH連接時,會生成一個認證,儲存在客戶端(也就是用SSH連線其他電腦的那個,自己操作的那個)中的known_hosts,但是如果服務器驗證過了,認證資訊當然也會更改,服務器端與客戶端不同時,就會跳出錯誤啦~因此,只要把電腦中的認證資訊刪除,連線時重新生成,就一切完美啦~要刪除很簡單,只要在客戶端輸入一個指令

ssh-keygen -R +輸入服務器的IP

接下來再次連接一次,會出現

Are you sure you want to continue connecting (yes/no)?

輸入yes, 就完成連接啦!同時,新的認證也生成了

2、mysql遠程客戶端無法連接服務器

2003 - Can't connect to MySQL server on 'xxx.xxx.xxx' (60 "Operation timed out")

網上查到說是防火牆的問題,但是將防火牆關閉后還是不行,這里說下我的問題及解決方式,通過關閉防火牆以及配置防火牆都無法解決該問題,最后了解到阿里雲的安全組,
在阿里雲添加安全組規則,增加端口3306/3306,授權對象 0.0.0.0/0就可以訪問了

除此之外 ,還有幾種其他查找問題的方式

  • 網絡不通,通過cmd命令ping服務器IP,看是否ping通;
  • 服務未啟動,查看啟動端口:#netstat -nltp
  • 防火牆設置
  • 查看配置文件my.cnf,是否配置了bind-address = 127.0.0.1,需屏蔽掉

參考閱讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM