每次在虚拟机上用 Cent OS,总是要不厌其烦地装 mysql,这篇文章就记录一下,在 Cent OS 7 下装 mysql 并使用的全过程。
当然安装过程中也参考了诸多网友们写下的安装经验,我这里很难一一列出,但是在此一并表示感谢了。
正是因为众多网友无私的分享,孜孜不倦的记录,才能让后人踩在前人的肩膀上,不断进步,也让互联网行业欣欣向荣的发展。
Cent OS 7 的 yum 源中已经不再包含在 MySQL,而改用了 MariaDB。
关于 mariaDB 的介绍,大家可以参考 wikipedia。
简单点来说,MariaDB 就是 mysql 被 Oracle 收购以后,新开的一个 mysql 的分支,完全兼容 mysql。
但是问题又来了,既然两者没什么差别,为什么要大费周章的把 MariaDB 换成mysql 呢?
这个问题,我想不同的人能给出不同的答案。
而对于我来说,主要是出于习惯,用起来顺手而已。
闲话不多说,开始吧!
rpm -qa | grep maria*
yum -y remove maria*
【注意】 如果第一步命令执行以后,什么都没有,那么第二就直接跳过吧,因为你的系统中并没有装 MariaDB 。
进入 mysql 官方提供的 yum 包下载页面,地址为:https://dev.mysql.com/downloads/repo/yum/ ,页面如下,选择适合你系统的 yum 包
可以用 weget 等下载方式,请自行选择。
进入防止下载好的 yum 包的目录中,运行以下命令:
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
后面的文件名是我下载的 mysql yum 包,你需要填上对应的你下载的 yum 包。
yum install -y mysql-community-server
这个过程一般挺漫长的,视你的网速和极其配置而定。
# 启动mysql
systemctl start mysqld.service
# 查询mysql状态
systemctl status mysqld.service
cat /var/log/mysqld.log
默认会生成一个很复杂的密码,而这个密码会保存在mysqld.log
里面,因此通过查看这个文件,就能找到自动生成的密码。
mysql -uroot -p your_password
mysql> select @@log_error;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
但是如果你把密码设置的很简单,又通过不了密码强度验证。
mysql> alter user 'root'@'localhost' identified by 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user 'root'@'localhost' identified by 'root_123';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这个时候,你需要做的是,先设置一个暂时的比较复杂的密码,这个密码要包含大小写、数字以及字符才能通过安全验证。
mysql> alter user 'root'@'localhost' identified by 'Root_123';
Query OK, 0 rows affected (0.23 sec)
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| 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 |
+--------------------------------------+--------+
7 rows in set (0.43 sec)
mysql> set global validate_password.length = 1;
Query OK, 0 rows affected (0.01 sec)
mysql> set global validate_password.policy = 0;
Query OK, 0 rows affected (0.00 sec)
当然,这个修改只建议在测试环境下使用,如果在生产环境使用简单密码,会导致数据库密码极易被破解,使得数据库中的数据有泄露的风险。
mysql> alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.23 sec)
mysql> alter user 'root'@'%' identified with mysql_native_password by 'root123';
Query OK, 0 rows affected (0.07 sec)
# 属性权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
做了以上的修改以后,才能远程连接数据库。