Linux服務器之安裝MySQL

環境:mysql

  • CentOS 7.4.1708
  • MySQL 5.7

1、Yum安裝MySQLsql

       1.下載yum庫shell

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

      2.安裝yum庫數據庫

shell > yum localinstall -y mysql57-community-release-el7-7.noarch.rpm

      3.安裝數據庫安全

shell > yum install -y mysql-community-server

      4.啓動MySQL服務bash

shell > systemctl start mysqld.service    #啓動
shell > systemctl stop mysqld.service     #中止
shell > systemctl restart mysqld.service  #重啓

      5.注意:MySQL5.7安裝後會有一個默認生成的root密碼,咱們要獲取到這個密碼,經過下面這個命令就能夠獲取到隨機生成的root密碼服務器

shell > sudo grep 'temporary password' /var/log/mysqld.log

      6.使用隨機生成的密碼進入mysqlide

shell > mysql -uroot -p
shell > Enter password:

      7.使用隨機生成的密碼進入到mysql,必須立刻修改密碼,否則會出現以下錯誤ui

mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

      8. 若是隻是修改成一個簡單的密碼,會報如下錯誤:this

mysql>  ALTER USER USER() IDENTIFIED BY 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

      這是由於MySQL5.7默認安裝了validate_password插件,用來校驗設置密碼是否符合必定要求,以保證密碼的安全性。請查看第二部分以後,再修改密碼;

2、MySQL5.7的validate_password插件

      1. validate_password_policy 密碼校驗策略,這個密碼校驗策略就會校驗你設置的密碼是否符合當前MySQL校驗策略的要求。

      有以下策略:

     

validate_password_polic
Policy Tests Performed
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

      策略:默認是1,即MEDIUM,因此剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。

      實例:可是有時候,不想密碼設置得那麼複雜,好比我只想設置root的密碼爲root。

      (1)首先,咱們要將validate_password_policy 策略修改成0,即只校驗密碼長度:

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

      (2)此時,就由validate_password_length參數來判斷了,即判斷密碼的長度便可,咱們先看看此時咱們validate_password_length的要求是什麼:

select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

      注意: validate_password_length參數默認爲8,它有最小值的限制,最小值爲:

validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)

      上面參數解析:

  • validate_password_number_count:指定了密碼中數據的長度
  • validate_password_special_char_count:指定了密碼中特殊字符的長度
  • validate_password_mixed_case_count:指定了密碼中大小字母的長度
  • 以上參數,默認值均爲1,因此validate_password_length最小值爲4
  • 可是,若是你顯性指定validate_password_length的值小於4,儘管不會報錯,但validate_password_length的值將設爲4。以下所示:
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          8 |
+----------------------------+
1 row in set (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)

      注意:若是修改了

validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一個值,則validate_password_length將進行動態修改。以下,我將

validate_password_mixed_case_count的值修改爲2,則validate_password_length就會動態修改爲6。

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          4 |
+----------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
|                                    2 |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
|                          6 |
+----------------------------+
1 row in set (0.00 sec)

3、常見錯誤解決辦法

      1.ERROR 1290 (HY000): The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement.

      解決辦法:

shell> mysql
mysql> set global read_only=0;
mysql> flush privileges;
mysql> quit
shell> /usr/bin/mysql_secure_installation

      2.[ERROR] InnoDB: Cannot create log files because data files are corrupt or the database was not shut down cleanly after creating the data files.

      解決辦法:

shell> cd /var/lib/mysql
shell> mv ibdata1 ibdata1.bak

      3.[ERROR] InnoDB: space header page consists of zero bytes in data file ./ibdata1

      解決辦法:

innodb_flush_log_at_trx_commit = 2 在此後添加下面內容
innodb_flush_method=normal

      4.ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

      解決辦法:沒有輸入密碼,注意MySQL5.7默認初始密碼不爲空,會產生一個隨機密碼!

臨時密碼獲取:sudo grep 'temporary password' /var/log/mysqld.log

      5.ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

      解決辦法:密碼錯誤,請檢查後從新輸入!

4、遠程訪問MySQL須要的配置

      1.首先,在雲服務安全組配置安全規則,開放MySQL的3306端口

      2.查看3306端口是否開放,並綁定內網IP

#netstat -anpt | grep 3306
  
修改 /etc/my.cnf
# vi /etc/my.cnf
---->bind-address = 內網IP(10.141.26.176)

      3.給root用戶全部的mysql操做權限

mysql > grant all privileges on *.* to root @"%" identified by "root" with grant option;
mysql > flush privileges;

      4.關閉服務器防火牆

開啓 start  關閉 stop  當前狀態 status  重啓 restart   開機啓動禁止 disable  開機自啓動 enable

shell > systemctl start firewalld.service

其餘服務:httpd.service

      以上,你就能夠在本機的mysql圖像化界面去鏈接你的雲服務中安裝的MySQL了!

 

 

本文爲原創文章,若是對你有一點點的幫助,別忘了點贊哦!比心!如需轉載,請註明出處,謝謝!

相關文章
相關標籤/搜索