一 安装mysql 8.0 yum源
cd /etc/yum.repos.d/
curl https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm > centos7.mysql.rpm
yum install centos7.mysql.rpm -y
#修改mysql 8.0镜像,关闭强制认证
vi mysql-community.repo
二 yum安装mysql
/*
#查看下列文件的属性,确保没有输出i属性
lsattr /etc/passwd
lsattr /etc/group
lsattr /etc/shadow
lsattr /etc/gshadow
假如有i属性,那在后面执行yum install mysql-community-server -y时会无法自动建mysql用户,会报错:
warning: user mysql does not exist - using root
后面Mysql也起不来,执行journalctl -xe报错:
Mar 18 17:44:23 Centos7-Mode-V8 systemd[25239]: Failed at step USER spawning /usr/bin/mysqld_pre_systemd: No such process
-- Subject: Process /usr/bin/mysqld_pre_systemd could not be executed
需要去除i属性:
chattr -ia /etc/passwd
chattr -ia /etc/group
chattr -ia /etc/shadow
chattr -ia /etc/gshadow
*/
yum install mysql-community-server -y
三 启动mysql
systemctl start mysqld
systemctl enable mysqld
#检查启动状态
systemctl status mysqld
四 查看root临时密码
安装完mysql之后,会生成一个临时的密码让root用户登录
grep "temporary password" /var/log/mysqld.log
如果/var/log/mysqld.log没有这个目录
可能是MySQL服务没有初始化好。可以按照如下流程重新初始化一下试试:
1、删除原来安装过的mysql残留的数据
rm -rf /var/lib/mysql
2、重启mysqld服务
systemctl restart mysqld
3、再去找临时密码
grep 'temporary password' /var/log/mysqld.log
五 安全操作
mysql_secure_installation
mysql_secure_installation命令的作用:
- 可以为root帐户设置密码。
- 可以删除外部访问的root帐户。
- 可以删除匿名帐户。
- 可以删除测试数据库(默认情况下,所有用户,包括匿名用户都可以访问该数据库)以及相关权限。
使用
mysql_secure_installation
常用选项
-h host_name -P port_num -u user_name -p password
六 解决SELECT list is not in GROUP BY clause and contains nonaggregated column
SELECT list is not in GROUP BY clause and contains nonaggregated column解决和总结_悲雨叹风的博客-优快云博客
七
4.登录root用户
mysql -u root -p
然后输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库,否则会报错。
5.修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
这里有个问题,新密码设置的时候如果设置的过于简单会报错:
原因是因为MySQL有密码设置的规范,具体是与validate_password_policy的值有关:
MySQL完整的初始密码规则可以通过如下命令查看:
密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
如果想要设置简单的密码必须要修改约束,修改两个全局参数:
validate_password_policy代表密码策略,默认是1:符合长度,且必须含有数字,小写或大写字母,特殊字符。设置为0判断密码的标准就基于密码的长度了。一定要先修改两个参数再修改密码
mysql> set global validate_password.policy=0;
validate_password_length代表密码长度,最小值为4
mysql> set global validate_password.length=4;
修改完,如图
此时密码就可以设置的很简单,例如1234之类的。到此数据库的密码设置就完成了。
ALTER USER 'root'@'localhost' IDENTIFIED BY '%V9Ha1Ne0B9C4r0J&';
CREATE USER 'w.s.w'@'localhost' IDENTIFIED BY 'wangwei2';
grant all privileges on `ry-vue`.* to 'w.s.w'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
[root@localhost ~]# yum -y remove mysql80-community-release-el7-2.noarch
八 解决sqlog 2058错误
[root@localhost~]# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';