需要用到的两个参数:
--skip
-grant
-tables:跳过授权表
--skip
-networking:跳过TCP
/IP连接
方法一:
可以在启动数据库的时候,加上--skip-grant-tables
~
]
在启动数据库的时候跳过授权表
注意:必须使用service DEAMON start/restart,使用 systemctl不生效
方法二:
1. 关闭数据库
systemctl stop mysqld
2. 使用安全模式启动
mysqld_safe --skip-grant-tables --skip-networking
&
或者
service mysqld start --skip-grant-tables --skip-networking
3. 登陆数据库并修改密码
[root@VM-16-80-centos ~
]
Welcome to the MariaDB monitor. Commands end with
; or \g.
Your MariaDB connection
id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright
(c
) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type
'help;' or
'\h' for help. Type
'\c' to
clear the current input statement.
MariaDB
[(none
)]> create user root@
'%' identified by
'redhat';
ERROR 1290
(HY000
): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
MariaDB
[(none
)]> flush privileges
; //刷新授权表,因为上一句报错是因为目前处于安全模式中,无法读取到授权表,因此也就无法修改密码
Query OK, 0 rows affected
(0.003 sec
)
MariaDB
[(none
)]> create user root@
'%' identified by
'redhat';
Query OK, 0 rows affected
(0.000 sec
)
//此处可以使用create,也可以使用alter,alter本来就可以用来修改密码
4. 重启数据库到正常模式
service mysqld rstart
或者
systemctl restart mysqld
启动过程:
方法三:
可以将--skip-grant-tables --skip-networking直接添加到/etc/my.cnf配置文件中,如下:
[mysqld
]
skip-grant-tables
skip-networking
然后restart数据库,直接可以无需密码登录
[root@VM-16-80-centos ~
]
Welcome to the MariaDB monitor. Commands end with
; or \g.
Your MariaDB connection
id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright
(c
) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type
'help;' or
'\h' for help. Type
'\c' to
clear the current input statement.
MariaDB
[(none
)]>