优先推荐文章:
一,先卸载centos 7自带的mariadb
查看
[root@localhost chunxiaolin]# rpm -qa|grep mariadb
卸载
[root@localhost chunxiaolin]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
查看
[root@localhost chunxiaolin]# rpm -qa|grep mariadb
二,检查是否有MySQL
查看
[root@localhost chunxiaolin]# rpm -qa | grep mysql
mysql57-community-release-el7-8.noarch
卸载
[root@localhost chunxiaolin]# rpm -e --nodeps mysql57-community-release-el7-8.noarch
查看
[root@localhost chunxiaolin]# rpm -qa | grep mysql
在MySQL官网中下载YUM源rpm安装包:https://dev.mysql.com/downloads/repo/yum/
# 下载mysql源安装包
[root@localhost chunxiaolin]#
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
或
[root@localhost chunxiaolin]#
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
# 安装mysql源
[root@localhost chunxiaolin]# yum -y localinstall mysql57-community-release-el7-8.noarch.rpm
若报-bash: wget: command not found,则表明没有安装wget,需要安装,安装命令如下:
Yum -y install wget
安装完成即可以使用。
检查mysql源是否安装成功
[root@localhost chunxiaolin]# yum repolist enabled | grep "mysql.*-community.*"
[root@localhost chunxiaolin]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
安装
[root@localhost yum.repos.d]# yum -y install mysql-community-server
[root@localhost yum.repos.d]# systemctl start mysqld
或
[root@localhost yum.repos.d]# systemctl start mysqld.service
查看是否启动
[root@localhost yum.repos.d]# systemctl status mysqld.service
[root@localhost yum.repos.d]# systemctl enable mysqld
[root@localhost yum.repos.d]# systemctl daemon-reload
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
[root@localhost yum.repos.d]# grep 'temporary password' /var/log/mysqld.log
2018-08-17T12:49:33.835763Z 1 [Note] A temporary password is generated for root@localhost: *_wtq)QJ<4j.
这里的临时密码是 *_wtq)QJ<4j.
使用默认的临时密码登陆
用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:
[root@localhost yum.repos.d]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Query OK, 0 rows affected (0.03 sec)
或
mysql> set password for 'root'@'localhost'=password('MyNewPass4!');
Query OK, 0 rows affected, 1 warning (0.00 sec)
注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误
通过msyql环境变量可以查看密码策略的相关信息:
mysql> show variables like '%password%';
+---------------------------------------+-------+
| Variable_name | Value |
+---------------------------------------+-------+
| default_password_lifetime | 0 |
| disconnect_on_expired_password | ON |
| log_builtin_as_identified_by_password | OFF |
| mysql_native_password_proxy_users | OFF |
| old_passwords | 0 |
| report_password | |
| sha256_password_proxy_users | OFF |
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+---------------------------------------+-------+
14 rows in set (0.01 sec)
MySQL官网密码策略详细说明:http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy
如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements呢? 这里直接提供解决方案文末有详细的说明
方法一:
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
再修改密码的长度
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
再次执行修改密码就可以了
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
Query OK, 0 rows affected (0.00 sec)
最后记得刷新权限;
mysql>flush privileges
关于密码设置的详细说明
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
方法二:
修改密码策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password_policy=0
如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password = off
重新启动mysql服务使配置生效:
systemctl restart mysqld
方法三:
也可以 直接再添加新用户
CREATE USER ‘root‘@‘%‘ IDENTIFIED BY ‘您的密码‘;
grant all on *.* to 'root001'@'%' identified by 'Root@@' with grant option;
增加root用户指定可以任意IP登录,如果想限制只能让指定IP登录请把%替换成IP地址
默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
MySQL密码忘记
方法一:
如果忘记root密码,则按如下操作恢复:
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。
mysql -u root
update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
flush privileges
方法二:
问题:如果发现找不到密码!!!!!
解决:只能通过忘记密码的方式修改密码!!! 在安装的过程中发现找不到密码???折腾了好长时间 通过修改密码找回之后发现、原来之前安装的数据库在了,就没有生产新的数据库!!用的还是之前的配置。
2.看mysql启动了没?初始化数据库了没? 一般直接启动 数据库 就可以 用grep "password" /var/log/mysqld.log 看到随机密码了
修改MySQL的登录设置:
#vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。
重新启动mysqld
#/etc/init.d/mysqld restart ( service mysqld restart )
use mysql
update user set password=password("12345") where user="root";
mysql 5.7的数据库没有了password字段 用的是authentication_string字段
mysql> update mysql.user set authentication_string=password('root') where user='root' ;
flush privileges;
修改密码之后在改回来
把密码改简单的方法 http://blog.csdn.net/z13615480737/article/details/78907697
MySQL密码忘记:https://www.jb51.net/article/95399.htm
参考文档一:https://www.jb51.net/article/116032.htm
参考文档二:https://www.cnblogs.com/ianduin/p/7679239.html
参考
设置开机启动
执行: systemctl enable mysqld
执行:systemctl daemon-reload
至此,mysql5.7的安装就完成了!!!
文档:https://www.cnblogs.com/YangshengQuan/p/8431520.html
进入MySQL
[root@localhost yum.repos.d]# mysql -u root -p
再输入
mysql> use mysql;
新建用户 ----- MySQL5.7不支持root用户%
新建用户chun
mysql> GRANT ALL PRIVILEGES ON *.* TO 'chun'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
character_set_server=utf8
init_connect='SET NAMES utf8'
关闭防火墙
systemctl stop mysqld.service
用第三方软件测试
mysql5.7以上版本,登录时报1045错误解决办法:https://blog.csdn.net/qq_21386275/article/details/78280370
如果是2003错误,有很多可能,
1.MySQL的权限是否是%,所有IP都可登陆?
2.文件配置,vi /etc/my.cnf
3.防火墙关闭
4.等等问题
参考解决方法:
修改my.cnf文件
vi /etc/my.cnf
在文件中{mysqld}下增加
skip-name-resolve #跳过域名解析
lower_case_table_names=1 #忽略大小写
重启生效
systemctl restart mysqld.service