MySQL中--skip-password参数探究
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为主,忽略--password=[pwd],-p[pwd]。
接下来设置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)