安装
更新系统
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%';
查看,其规则形如
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/
https://medium.com/@micheleberardi/error-1819-hy000-your-password-does-not-satisfy-the-current-policy-requirements-102043b67039