By default, MariaDB is installed in CentOS, which is a branch of MySQL. However, in order to meet the needs, MySQL should be installed in the system, and MariaDB can be directly overwritten after the installation.
1 download and install MySQL's official Yum Repository
[root@centos7 ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
Use the above command to download the Yum Repository for installation, about 25KB, and then install it directly.
[root@centos7 ~]# yum -y install mysql80-community-release-el7-3.noarch.rpm
Modify to the required version, disable the version not required by mysql in the yum repository and enable the required version
yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community or Manually edit the file / etc/yum.repos.d/mysql-community.repo to select, change the enabled=1 of the default version to 0, and the enabled=1 of the version is required
View the mysql version in the yum repository. It defaults to the latest enabled version and needs to be changed to the required version
yum repolist all | grep mysql
After that, install the MySQL server.
[root@centos7 ~]# yum -y install mysql-community-server
This step may take some time, and the previous mariadb will be overwritten after installation.
At this point, MySQL installation is complete, and then some settings for MySQL.
2 MySQL database settings
Start MySQL first
[root@centos7 ~]# systemctl start mysqld.service
View the running status of MySQL, as shown in the figure:
[root@centos7 ~]# systemctl status mysqld.service
At this time, MySQL is running normally. However, to enter mysql, you must find the password of the root user. You can find the password in the log file by the following command:
[root@centos7 ~]# grep "temporary password" /var/log/mysqld.log
Note: if this file is empty:
1.Remove the previously installed mysql Residual data (this step is very important, and the problem is here) rm -rf /var/lib/mysql 2.restart mysqld service systemctl restart mysqld 3.Find the temporary password again grep 'temporary password' /var/log/mysqld.log
Enter the database as follows:
[root@centos7 ~]# mysql -uroot -p
Enter the initial password, and nothing can be done at this time, because MySQL must modify the password by default to operate the database:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
There is a problem here. When setting a new password, if it is too simple, an error will be reported:
The reason is that MySQL has a password setting specification, which is specifically related to the value of validate ﹣ password ﹣ policy
About mysql password policy related parameters; 1) , validate ﹣ password ﹣ length ﹣ the total length of the fixed password; 2) , validate "password" dictionary "file specifies the file path for password verification; 3) , validate ﹣ password ﹣ mixed ﹣ case ﹣ count the total number of upper / lower case letters in the whole password; 4) , validate ﹣ password ﹣ number ﹣ count the number of Arabic numerals in the whole password; 5) , validate ﹣ password ﹣ policy specifies the strength authentication level of the password, which is MEDIUM by default; About the value of validate ﹣ password ﹣ policy: 0 or LOW: only the length is verified; 1 or MEDIUM: verification length, number, case, special character; 2 or STRONG: verify length, number, case, special character, dictionary file; 6) , validate ﹣ password ﹣ special ﹣ char ﹣ count the number of special characters in the whole password;
The complete initial password rules of MySQL can be viewed by the following command:
mysql> set global validate_password_length=4; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_policy=LOW; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_length=8; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | 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 | LOW | | validate_password_special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec)
By default, only root account is allowed to log in locally. If you want to connect mysql on other machines, you must modify root to allow remote connection
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
After setting, I find out the values above. At this time, the password can be set very simply, such as 1234 and so on. The password settings for this database are complete.
Configure database encoding
vim /etc/my.cnf [mysql] default-character-set=utf8 [mysqld] character_set_server=utf8
But there is another problem at this time, because Yum Repository is installed, and every yum operation will update automatically in the future. You need to uninstall this:
[root@localhost ~]# yum -y remove mysql80-community-release-el7-3.noarch
That's when it's really done.