CentOS 7安装Mysql

安装

更新系统

sudo yum update

下载mysql 8.0的repo

sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

预处理刚下载的repo

sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

安装mysql

sudo yum install mysql-server

运维管理

查看mysql状态

sudo systemctl status mysqld

sudo systemctl start mysqld

sudo systemctl stop mysqld

问题1-链接时忘记root账号密码

先停止mysql

sudo systemctl stop mysqld

以非安装模式启动mysql,可能需要root权限

mysqld --skip-grant-tables --skip-networking &

如果启动报错

[ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

错误提示需要以root用户去启动mysqld,所以想当然以为是通过root权限去启动上述命令,结果依然有问题。实际以root启动mysqld的方式是在命令加--user=root参数来解决,命令修改后如下

mysqld --user=root --skip-grant-tables --skip-networking &

现在我们可以以root账号免密登录mysql

mysql -u root

刷新权限相关的表

FLUSH PRIVILEGES;

给root账号指定新的密码

ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘new_password‘;

如果秘密指定的过于简单,可能会报如下错误

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这是由于Mysql默认有密码策略组件在做密码复杂度约束,强迫我们指定的密码需要达到一定的复杂度。具体密码规则可以通过在链接msyql后通过SHOW VARIABLES LIKE ‘validate_password%‘;查看,其规则形如
CentOS 7安装Mysql

  • validate_password.length 要求密码的长度必须为8
  • validate_password.number_count 要求必须要一个数字
  • validate_password.policy 密码策略规则校验等级是MEDIUM

你可以通过命令SET GLOBAL validate_password.length = 4;去修改某项规则值,去满足你的密码需求。还可以直接通过SET GLOBAL validate_password.policy = LOW;降低整体密码校验规则的等级

当然,这些降低密码复杂度规则的方式,仅可以用于测试环境,生产环境密码搞这么低,是有风险的。

修改完后,停止mysql

sudo systemctl stop mysqld

如果停止报错,则通过进程id的方式进行杀死。

然后以正常方式重启mysql。重启可能失败,出现类似以下错误

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 六 2020-06-20 11:06:43 CST; 10s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 12872 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 12848 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 12872 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"
    Error: 13 (权限不够)

该错误原因是权限不够,前面我们以root用户启动了mysql ,导致mysql相关的文件的owner已经变成了root,则使得mysql本身的user 也叫“mysql”,无权访问相关文件。解决办法是查看/etc/my.cnf文件,看下其中mysql服务涉及到的文件路径。然后修改这些文件、文件夹权限,将其Owner改成mysql。

最后再尝试重启mysql,应该万事大吉了。

参考资料

https://www.hostinger.com/tutorials/how-to-install-mysql-on-centos-7
https://tableplus.com/blog/2018/11/what-is-the-default-username-password-in-mysql.html#:~:text=In MySQL%2C by default%2C the,root and there‘s no password.
https://mariadb.com/kb/en/mysqld-options/#-user
https://medium.com/@micheleberardi/error-1819-hy000-your-password-does-not-satisfy-the-current-policy-requirements-102043b67039

CentOS 7安装Mysql

上一篇:SQL SERVER性能分析--死锁检测数据库阻塞语句


下一篇:Oracle管道函数(Pipelined Table Function)介绍