前兩天由於數據庫被黑客攻擊,致使數據被刪除,數據庫被損壞,系統從新安裝了一下,因此環境也須要從新再搭一遍,包括mysql、nodejs、git、nginx和redis的安裝。因爲以前安裝的mysql安裝方式比較麻煩,此次使用yum的方式來安裝mysql數據庫,這篇文章記錄下mysql的安裝過程。html
/usr: 系統級的目錄,能夠理解爲C:/Windows/;/usr/bin 存放應用程序;/usr/share 存放共享數據,/usr/lib 存放不能直接運行的,倒是許多程序運行所必需的一些函數庫文件,能夠理解爲C:/Windows/System32
*好比Java的安裝目錄,我會放在這裏。node
/usr/local:用戶級的程序目錄,能夠理解爲C:/Progrem Files/。
用戶本身編譯的軟件默認會安裝到這個目錄下。
*好比Hadoop,Tomcat的安裝目錄我通常會放在/usr/目錄下mysql
/opt:給主機額外安裝軟件所擺放的目錄。用戶級的程序目錄,能夠理解爲D:/Software,opt有可選的意思,這裏能夠用於放置第三方大型軟件(或遊戲),當你不須要時,直接rm -rf掉便可。在硬盤容量不夠時,也可將/opt單獨掛載到其餘磁盤上使用。
*好比臨時上傳到Linux裏的軟件;tar.gz rpm等文件,用做軟件倉庫。linux
完整的目錄結構說明:nginx
/git
這就是根目錄。對你的電腦來講,有且只有一個根目錄。全部的東西,我是說全部的東西都是從這裏開始。舉個例子:當你在終端裏輸入「/home」,你實際上是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。redis
/rootsql
這是系統管理員(root user)的目錄。對於系統來講,系統管理員就比如是上帝,它能對系統作任何事情,甚至包括刪除你的文件。所以,請當心使用root賬號。數據庫
/bincentos
這裏存放了標準的(或者說是缺省的)linux的工具,好比像「ls」、「vi」還有「more」等等。一般來講,這個目錄已經包含在你的「path」系 統變量裏面了。什麼意思呢?就是:當你在終端裏輸入ls,系統就會去/bin目錄下面查找是否是有ls這個程序。
/etc
這裏主要存放了系統配置方面的文件。舉個例子:你安裝了samba這個套件,當你想要修改samba配置文件的時候,你會發現它們(配置文件)就在/etc/samba目錄下。
/dev
這裏主要存放與設備(包括外設)有關的文件(unix和linux系統均把設備當成文件)。想連線打印機嗎?系統就是從這個目錄開始工做的。另外還有一些包括磁盤驅動、USB驅動等都放在這個目錄。
/home
這裏主要存放你的我的數據。具體每一個用戶的設置文件,用戶的桌面文件夾,還有用戶的數據都放在這裏。每一個用戶都有本身的用戶目錄,位置爲:/home/用戶名。固然,root用戶除外。/tmp
這是臨時目錄。對於某些程序來講,有些文件被用了一次兩次以後,就不會再被用到,像這樣的文件就放在這裏。有些linux系統會按期自動對這個目錄進行清理,所以,千萬不要把重要的數據放在這裏。/usr
在這個目錄下,你能夠找到那些不適合放在/bin或/etc目錄下的額外的工具。好比像遊戲阿,一些打印工具拉等等。/usr目錄包含了許多子目錄: /usr/bin目錄用於存放程序;/usr/share用於存放一些共享的數據,好比音樂文件或者圖標等等;/usr/lib目錄用於存放那些不能直接 運行的,但倒是許多程序運行所必需的一些函數庫文件。你的軟件包管理器(應該是「新立得」吧)會自動幫你管理好/usr目錄的。/opt
這裏主要存放那些可選的程序。你想嘗試最新的firefox測試版嗎?那就裝到/opt目錄下吧,這樣,當你嘗試完,想刪掉firefox的時候,你就可 以直接刪除它,而不影響系統其餘任何設置。安裝到/opt目錄下的程序,它全部的數據、庫文件等等都是放在同個目錄下面。
舉個例子:剛纔裝的測試版firefox,就能夠裝到/opt/firefox_beta目錄下,/opt/firefox_beta目錄下面就包含了運 行firefox所須要的全部文件、庫、數據等等。要刪除firefox的時候,你只需刪除/opt/firefox_beta目錄便可,很是簡單。
/usr/local
這裏主要存放那些手動安裝的軟件,即不是經過「新立得」或apt-get安裝的軟件。它和/usr目錄具備相相似的目錄結構。讓軟件包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下面,我想這應該是個不錯的主意。
/media
有些linux的發行版使用這個目錄來掛載那些usb接口的移動硬盤(包括U盤)、CD/DVD驅動器等等。
其餘
/usr/local 這個目錄通常是用來存放用戶自編譯安裝軟件的存放目錄;通常是經過源碼包安裝的軟件,若是沒有特別指定安裝目錄的話,通常是安裝在這個目錄中。這個目錄下面有子目錄。本身看看吧。
/usr/share 系統共用的東西存放地,好比 /usr/share/fonts 是字體目錄,/usr/share/doc和/usr/share/man幫助文件。
/var/log 系統日誌存放,分析日誌要看這個目錄的東西;
/var/spool 打印機、郵件、代理服務器等假脫機目錄;
下載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
看到這個表示安裝成功
yum install mysql-community-server
systemctl start mysqld
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.
systemctl enable mysqld systemctl daemon-reload
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
一、建立用戶
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:你將建立的用戶名
host:指定該用戶在哪一個主機上能夠登錄,若是是本地用戶可用localhost,若是想讓該用戶能夠從任意遠程主機登錄,可使用通配符%
password:該用戶的登錄密碼,密碼能夠爲空,若是爲空則該用戶能夠不須要密碼登錄服務器
如:
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
二、受權用戶權限
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'@'%';
三、撤銷用戶權限
REVOKE privilege ON databasename.tablename FROM 'username'@'host'; 如 REVOKE SELECT ON *.* FROM 'pig'@'%';
四、刪除用戶
DROP USER 'username'@'host';
一、阿里雲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, 就完成鏈接啦!同時,新的認證也生成了
二、mysql遠程客戶端沒法鏈接服務器
2003 - Can't connect to MySQL server on 'xxx.xxx.xxx' (60 "Operation timed out")
網上查到說是防火牆的問題,可是將防火牆關閉後仍是不行,這裏說下個人問題及解決方式,經過關閉防火牆以及配置防火牆都沒法解決該問題,最後瞭解到阿里雲的安全組,
在阿里雲添加安全組規則,增長端口3306/3306,受權對象 0.0.0.0/0就能夠訪問了
除此以外 ,還有幾種其餘查找問題的方式