查看系統是否安裝了yum工具:html
[root@wangbo srv]# rpm -qa | grep yum yum-metadata-parser-1.1.4-10.el7.x86_64 yum-3.4.3-161.el7.centos.noarch yum-plugin-fastestmirror-1.1.31-50.el7.noarch
表示已經安裝了,若是沒有安裝,能夠參考:https://jingyan.baidu.com/article/ce09321bbde1de2bff858f9a.htmlmysql
rpm和yum命令參考:http://www.javashuo.com/article/p-obqlsxup-cm.htmlsql
首先檢查下是否安裝了服務數據庫
[root@wangbo srv]# yum list installed | grep mysql
或者centos
[root@wangbo srv]# rpm -qa | grep mysql
沒有顯示就表示沒有安裝,若是安裝了能夠刪除,以下所示:安全
安裝在 /srv/mysql/ 文件夾下。服務器
[root@wangbo srv]# mkdir mysql [root@wangbo srv]# cd mysql [root@wangbo mysql]#
下載並安裝MySQL官方的 Yum Repository工具
[root@wangbo mysql]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
文件是紅色的,須要修改文件權限,修改完會看到文件變綠色了。ui
[root@wangbo mysql]# chmod 755 mysql57-community-release-el7-10.noarch.rpm
開始安裝mysql源文件this
[root@wangbo mysql]# yum install -y mysql57-community-release-el7-10.noarch.rpm
接下來會顯示安裝過程,最後顯示Complete! 的時候就表示安裝好了。
檢查mysql源是否安裝成功
[root@wangbo mysql]# yum repolist enabled | grep "mysql.*-community.*"
看到上圖所示表示安裝成功。
開始安裝數據庫服務
[root@wangbo mysql]# yum install -y mysql-community-server
接下來會顯示安裝過程。最後顯示Complete! 的時候就表示安裝好了。
啓動MySQL數據庫
[root@wangbo mysql]# systemctl start mysqld
查看數據庫狀態
[root@wangbo mysql]# systemctl status mysqld
[root@wangbo mysql]# systemctl enable mysqld
通知systemd重載配置文件,若是是在啓動mysql服務以前設置的,則不須要這一步了。
[root@wangbo mysql]# systemctl daemon-reload
mysql共有如下幾種密碼策略:
策略 | 檢查規則 |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
在 /etc/my.cnf 文件添加validate_password_policy配置,指定密碼策略
[root@wangbo mysql]# vi /etc/my.cnf
按 i 進入編輯狀態
# 選擇0(LOW),1(MEDIUM),2(STRONG)其中一種,選擇2須要提供密碼字典文件 validate_password_policy=0
若是不須要密碼策略,添加 my.cnf 文件中添加以下配置禁用便可:
validate_password = off
咱們這裏選擇禁用密碼策略,按 ESC,而後 :wq! 保存退出。
從新啓動mysql服務使配置生效:
[root@wangbo mysql]# systemctl restart mysqld
mysql安裝完成以後,在/var/log/mysqld.log文件中給root生成了一個默認密碼。經過下面的方式找到root默認密碼,而後登陸mysql進行修改:
[root@wangbo mysql]# grep 'temporary password' /var/log/mysqld.log
2019-03-29T09:43:27.569868Z 1 [Note] A temporary password is generated for root@localhost: h<zuy>K-I6RD
用該密碼登陸數據庫,紅框中輸入上面查詢到的默認密碼 h<zuy>K-I6RD
[root@wangbo mysql]# mysql -u root -p
使用SQL修改密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxx';
若是提示下面內容,表示修改爲功
Query OK, 0 rows affected (0.00 sec)
若是密碼太簡單則會報一個錯誤,這就涉及到密碼策略的修改了。因此咱們這一步應該放在修改密碼策略以後作。
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看密碼策略,只有修改完密碼才能執行SQL,否則會報一個錯誤。
mysql> show variables like '%password%';
若是沒有修改完密碼,會報如下錯誤,提示必須先修改密碼。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
若是修改完密碼了,則會顯示查詢結果。
默認只容許root賬戶在本地登陸,若是要在其它機器上鍊接mysql,必須修改root容許遠程鏈接,或者添加一個容許遠程鏈接的賬戶,爲了安全起見,我添加一個新的賬戶:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY '123456789' WITH GRANT OPTION;
提示添加成功
Query OK, 0 rows affected, 1 warning (0.00 sec)
這一步通常不須要,默認的就是utf-8。
查看數據庫默認編碼以下所示:
mysql> show variables like '%character%';
修改/etc/my.cnf配置文件,在[mysqld]下添加編碼配置,以下所示:
[mysqld] character_set_server=utf8 init_connect='SET NAMES utf8'
從新啓動mysql服務使配置生效:
systemctl restart mysqld
接下來我用Navicate For MySQL 鏈接數據庫,報了10038的鏈接錯誤,是遠程服務器3306端口未開放。
因此登陸阿里雲後臺管理,找到安全組規則,添加一個安全組規則,
使用Navicate鏈接上數據庫後,新建一個數據庫
注意排序規則的選擇:
utf8_unicode_ci和utf8_general_ci對中、英文來講沒有實質的差異。
utf8_general_ci 校對速度快,但準確度稍差。
utf8_unicode_ci 準確度高,但校對速度稍慢。
若是你的應用有德語、法語或者俄語,請必定使用utf8_unicode_ci。通常用utf8_general_ci就夠了。
附:
ci是 case insensitive, 即 "大小寫不敏感", a 和 A 會在字符判斷中會被當作同樣的;
bin 是二進制, a 和 A 會別區別對待。
例如你運行:
SELECT * FROM table WHERE txt = 'a'
那麼在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 則能夠。
utf8_general_ci 不區分大小寫,這個你在註冊用戶名和郵箱的時候就要使用。
utf8_general_cs 區分大小寫,若是用戶名和郵箱用這個 就會照成不良後果。
utf8_bin 字符串每一個字符串用二進制數據編譯存儲。 區分大小寫,並且能夠存二進制的內容。
安裝好後,我用Navicate鏈接上了數據庫,可是每次執行SQL一直報一個錯誤,執行結果倒是正確的。
錯誤以下:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
參考博客地址:http://www.javashuo.com/article/p-evhumeic-by.html
解決辦法:
(1)直接經過SQL語句進行設置。
#查看數據庫版本和sql_mode select VERSION(),@@sql_mode;
#將ONLY_FULL_GROUP_BY設置爲空 SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
這樣設置後我發現從新鏈接後又恢復了,因此仍是直接修改配置文件吧。
(2)修改 my.cnf 配置文件
首先查詢出數據庫的sql_mode
select VERSION(),@@sql_mode;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在sql_mode 中去掉only_full_group_by ,將下列內容加入,而後保存配置文件後重啓數據庫,解決問題!
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
具體操做
在 /etc/my.cnf 文件添加 sql_mode 配置
[root@wangbo mysql]# vi /etc/my.cnf
按 i 進入編輯狀態,添加下列內容
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
按 ESC,而後 :wq! 保存退出。
從新啓動mysql服務使配置生效:
[root@wangbo mysql]# systemctl restart mysqld