MySQL中--skip-password参数作用

发布时间 2023-05-26 11:38:14作者: PiscesCanon

 

MySQL中--skip-password参数探究

 

本篇使用客户端:mysql

版本:MySQL8

认证插件:mysql_native_password

对于初始化数据库时,若是使用了--initialize-inscure选项,则对于用户root@localhost会使用空密码。

2023-05-26T09:20:21.205673+08:00 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

 

 

 

由于默认情况下,不使用-h或者指定-hlocalhost,会使用 Unix 套接字文件通过文件系统中的文件进行连接(Socket类型协议),

此时使用mysql客户端登录使用如下参数和值登录:

--no-defaults:避免默认/etc/my.cnf中client参数的影响。

--socket=/data/mysql3306/mysql3306.sock:指定套接字文件位置,默认/tmp/mysql.sock则不需要指定

-uroot:指定root用户,默认就是root

-p:使用密码方式登录

最终如下:

[root@dev-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot -p
Enter password: --因为是空密码,直接回车
...省略部分内容...
(root@localhost 11:15:40) [(none)]> 

 

防爬虫:https://www.cnblogs.com/PiscesCanon/p/17434322.html

注意,此种方式本质还是使用密码登录的方式。

[root@dev-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

 

 

有且仅当root密码为空的时候,则可以使用--skip-password指定无密码方式连接。

[root@dev-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot --skip-password
mysql: [Warning] Using a password on the command line interface can be insecure.
...省略部分内容...
(root@localhost 11:20:38) [(none)]> 

 

如果不指定--password=[pwd],-p[pwd]方式,默认也是无密码方式连接。

[root@dev-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot 
...省略部分内容...
(root@localhost 11:24:14) [(none)]> 

 

 

同时出现--password=[pwd],-p[pwd]和--skip-password,则以--skip-password为主。

接下来设置root用户密码。

(root@localhost 11:26:08) [(none)]> alter user user() identified by 'root';
Query OK, 0 rows affected (0.01 sec)

 

 

则无法使用无密码方式连接。

[root@dev-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot --skip-password
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@dev
-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

 

 

实验证明,即使指定--password=[pwd],-p[pwd]方式,但是直接回车输入密码也是无密码方式连接。

[root@dev-app80 ~]# mysql --no-defaults --socket=/data/mysql3306/mysql3306.sock -uroot -p
Enter password: 直接回车
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)