MySQL的安装与密码重置
所有文章不设限,我们相遇偶然,相散坦然,互不打扰,各自安好,向阳而生
检查环境中是否存在残留
rpm -qa | grep mysql #检查是否安装过MySQL
rpm -qa | grep mariadb #检查是否存在 mariadb 数据库
rpm -e --nodeps + 检查出的数据库名称
安装MySQL
下载MySQL源
curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
安装MySQL
yum install mysql57-community-release-el7-11.noarch.rpm -y #静默安装
检查所需软件包是否安装完毕
yum repolist enabled | grep "mysql.*-community.*"
可见,所有主要依赖包都已经下载完毕
安装mysql-community-server
yum install mysql-community-server -y
一切看似很顺利,但是后面报错
此处呢,我们就需要引入公共秘钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
到此处我们就已经安装成功了
再检查一下
yum list installed mysql-*
启动MySQL
systemctl start mysqld #启动MySQL
systemctl enable mysqld #设置开机自启
systemctl status mysqld #查看状态
密码修改
查看默认密码
grep 'temporary password' /var/log/mysqld.log
修改密码
注:默认的密码复杂度为 MEDIUM,所以新密码至少为8位,并且必须包含大、小写字母、数字和特殊字符,如果不符合就会报错
mysql -uroot -p
红色框等待处输入默认密码
修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'wanghui@Coder';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'wanghui1201@Coder';
Query OK, 0 rows affected (0.00 sec)
mysql>
第一次报错,就是因为密码强度不符合
授权远程登录
mysql> grant all privileges on *.* to 'root' @'%' identified by 'wanghui1201@Coder';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
以下是MySQL授权远程登录中的一些参数解释:
- CREATE USER:用于创建新用户的MySQL命令。
- ‘user’@‘%’:这是用户的身份及其来源的表示法。在这里,“user”是新用户的用户名,“%”表示该用户可以从任何IP地址连接到MySQL服务器。您还可以使用特定的IP地址或主机名来限制用户的连接来源。
- IDENTIFIED BY:用于设置新用户的密码。
- GRANT ALL PRIVILEGES:授予新用户可以执行所有操作的访问权限。
- ON database_name.*:这指定要授予权限的数据库和表(这里为数据库“database_name”中的所有表)。
- TO ‘user’@‘%’:指定要授予权限的用户和来源(这里为新用户,“%”表示他可以从任何IP地址连接)。
- FLUSH PRIVILEGES:用于刷新MySQL系统表中的权限信息,以便更改生效。
忘记密码后不需要重装进行密码重置
在这里我们新建数据库demo1作为辅助验证
mysql> create database demo1;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demo1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>
修改配置文件
首先用vim进一下配置文件:/etc/my.cof
vim /etc/my.cof
添加一下skip-grant-tables
这行的意思就是设置空密码登录,没办法呀,密码忘记了只能出此下策
重启MySQL
systemctl restart mysqld
免密登录
直接回车就可以了
修改密码
改密码首先要进入默认库 use mysql;
mysql> use mysql;
Database changed
mysql> UPDATE user SET Password= Password ('root') WHERE user='root';
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
mysql>
发现报错,原因字段没有对上
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('root') WHERE User='root';
Query OK, 2 rows affected, 1 warning (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 1
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
解释:
如果在执行UPDATE user SET password= Password ('root') WHERE user='root';
命令时,MySQL返回错误1054,这通常是因为MySQL的用户表发生了变化。您可以使用以下命令代替:
UPDATE mysql.user SET authentication_string=PASSWORD('root') WHERE User='root';
执行此操作后,您可能还需要运行以下命令,以确保系统表中的缓存被刷新:
FLUSH PRIVILEGES;
这应该会将root用户的密码更改为“root”。请注意,建议在生产环境中使用更强密码保护。
恢复配置文件
重启MySQL登录
这次输入修改后的密码,最后发现数据依旧,物是人非,哈哈哈哈