MySQL 8 与 skip-grant-tables

AUTHOR | nicechi
类别 | MySQL
发表 | 2020-11-11 13:36:30
更新 | 2020-11-11 13:36:30

通常情况下我们可以通过在 my.ini 配置文件中添加 --skip-grant-tables 参数的方式来使得可以不需要提供用户名和密码就可以直接进入到 MySQL 数据库中: 

// 在不使用 skip-grant-tables 的情况下,如果直接在命令行中键入 mysql 命令的话将会被拒绝登录:
- C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql
- ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

// 在使用了 skip-grant-tables 的情况下,如果直接在命令行中键入 mysql 命令的话将会直接进入MySQL:
- C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql
- Welcome to the MySQL monitor.  Commands end with ; or \g.
- Your MySQL connection id is 2
- Server version: 5.7.30-log MySQL Community Server (GPL)

-
- Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

-
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.

-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

在 MySQL 8 之前,直接在 my.ini 的 [mysqld] 中添加 --skip-grant-tables 就可以了,如下所示:

...
[mysqld]
...
skip-grant-tables
...
port=3308
...
...

但是对于 MySQL 8 来说,如果是仅仅在 my.ini 中添加 --skip-grant-tables 的话,mysql 的服务端(mysqld)将会无法启动,可能会出现如下的错误信息:

无法启动 mysqld

这是因为 MySQL 8.x 也是基于安全的考虑,毕竟如果某个数据库的 server 端使用了 --skip-grant-tables 的话,那么任何人都可以通过该端口直接连接到数据库中,这样子风险太大了,所以 MySQL 8.x 在使用了 --skip-grant-tables 的同时还将会默认强制启用 --skip-networking,也就是说在这种情况下,对于 MySQL 8.x 来说将会无法直接通过 TCP/IP 的方式来连接到 MySQL,而是需要同时与 --shared-memory 或者  --named-pipe 参数来配合使用,即:

# 方法一:--skip-grant-tables 与 --shared-memory 配合使用 
# 此时需要使用 shared memory 的方式来连接 MySQL 
...
[mysqld]
...
skip-grant-tables
shared-memory
...
port=3308
...
...

# 方法二:--skip-grant-tables 与 --named-pipe 配合使用 
# 此时需要使用 named pipe 的方式来连接 MySQL 
...
[mysqld]
...
skip-grant-tables
named-pipe
...
port=3308
...

官方文档对于 --shared-memory 与 --named-pipe 的介绍如下:

  • --shared-memory

--shared-memory[={OFF|ON}]

(Windows only.)Whether the server permits shared-memory connections.

  • --named-pipe

--named-pipe[={OFF|ON}]

(Windows only.)Indicates whether the server supports connections over named pipes.

 


CATEGORY

TOP