解決 MariaDB無密碼就可以登入的問題

2021-08-24 17:26:50 字數 4341 閱讀 2718

困擾了很久的問題,,

使用apt-get來安裝mysql,安裝好之後發現安裝的是 mariadb,如下,無需密碼既可以登入了。即使使用mysqladmin設定好密碼,用密碼登入可以,不用密碼登入也可以

1 root@ubuntu:/etc/mysql# mysql

2 welcome to the mariadb monitor. commands end with ; or \g.

3 your mariadb connection id is 35

4 server version: 10.0.31-mariadb-0ubuntu0.16.04.2 ubuntu 16.04

5 7

8 type 'help;' or '\h' for help. type '\c' to clear the current input statement.

第一看看my.conf有沒有skip-grant-tables,跳過密碼驗證

過濾了下沒有

1 root@ubuntu:~# cd /etc/mysql/

2 root@ubuntu:/etc/mysql# pwd

3 /etc/mysql

4 root@ubuntu:/etc/mysql# ls -l

5 總用量 36

6 drwxr-xr-x 2 root root 4096 12月 7 18:05 conf.d

7 -rw------- 1 root root 277 12月 7 17:31 debian.cnf

8 -rw------- 1 root root 317 12月 7 17:05 debian.cnf-5.7

9 -rwxr-xr-x 1 root root 1426 7月 1 04:26 debian-start

10 -rw-r--r-- 1 root root 869 7月 1 04:26 mariadb.cnf

11 drwxr-xr-x 2 root root 4096 12月 7 18:08 mariadb.conf.d

12 lrwxrwxrwx 1 root root 24 12月 7 17:18 my.cnf -> /etc/alternatives/my.cnf

13 -rw-r--r-- 1 root root 839 1月 22 2017 my.cnf.fallback

14 -rw-r--r-- 1 root root 682 2月 4 2017 mysql.cnf

15 drwxr-xr-x 2 root root 4096 12月 7 18:08 mysql.conf.d

16 root@ubuntu:/etc/mysql# grep "skip-grant-tables" -r

17 root@ubuntu:/etc/mysql#

看看my.cnf裡面是不是把密碼寫進去了,查詢了相關.cnf檔案去看了看也沒有

1 root@ubuntu:~# find / -name "*.cnf"

2 /usr/share/ssl-cert/ssleay.cnf

3 /usr/share/dovecot/dovecot-openssl.cnf

4 /usr/lib/ssl/openssl.cnf

5 /etc/ssl/openssl.cnf

6 /etc/alternatives/my.cnf

7 /etc/mysql/my.cnf

8 /etc/mysql/mariadb.cnf

9 /etc/mysql/conf.d/mysqldump.cnf

10 /etc/mysql/conf.d/mysql.cnf

11 /etc/mysql/mariadb.conf.d/50-mysqld_safe.cnf

12 /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

13 /etc/mysql/mariadb.conf.d/50-client.cnf

14 /etc/mysql/mariadb.conf.d/50-server.cnf

15 /etc/mysql/debian.cnf

16 /var/lib/dpkg/alternatives/my.cnf

17 root@ubuntu:~#

不過有個小發現,

1  vim /etc/mysql/debian.cnf

2 # automatically generated for debian scripts. do not touch!

3 [client]

4 host = localhost

5 user = root

6 password =

7 socket = /var/run/mysqld/mysqld.sock

8 [mysql_upgrade]

9 host = localhost

10 user = root

11 password =

12 socket = /var/run/mysqld/mysqld.sock

13 basedir = /usr

14 15 看了說明是以上由指令碼生成,不要改動,

16 雖然這樣寫,我也去改了下,加上密碼,重啟還是不行

最後的最後,,,,去google了很久,終於有發現了,是使用者外掛程式問題。

參見這裡:

第一我去跟安裝正常的mysql來比較下,如下

1 正常mysql

2 mysql> select user, plugin from mysql.user where plugin = 'mysql_native_password';

3 +-----------+-----------------------+

4 | user | plugin |

5 +-----------+-----------------------+

6 |root | mysql_native_password |

7 +-----------+-----------------------+

8 8 rows in set (0.00 sec)

1 不正常的

2 3 mariadb [(none)]> select user, plugin from mysql.user;

4 +------+-------------+

5 | user | plugin |

6 +------+-------------+

7 | root | unix_socket |

8 +------+-------------+

9 1 row in set (0.00 sec)

看到這裡應該發現問題了,按照正常的修改就行了

如下:

1 sudo service mysql stop

2 sudo mysqld_safe --skip-grant-tables

3 進去mysql執行如下命令:

4 mariadb [(none)]> update mysql.user set authentication_string = password('mypassword'), plugin = 'mysql_native_password' where user = 'root' and host = 'localhost';

5 mariadb [(none)]> flush privileges;

6 驗證:

7 mariadb [(none)]> select user, plugin from mysql.user

8 -> ;

9 +------+-----------------------+

10 | user | plugin |

11 +------+-----------------------+

12 | root | mysql_native_password |

13 +------+-----------------------+

14 1 row in set (0.01 sec)

15 16 先殺死mysql kill -9 pid

17 啟動:

18 sudo service mysql start

最後驗證下:需要密碼了

root@ubuntu:~# mysql

error 1045 (28000): access denied for user 'root'@'localhost' (using password: no)

root@ubuntu:~#

解決 MariaDB無密碼就可以登入的問題

困擾了很久的問題,使用apt get來安裝mysql,安裝好之後發現安裝的是 mariadb,如下,無需密碼既可以登入了。即使使用mysqladmin設定好密碼,用密碼登入可以,不用密碼登入也可以 1 root ubuntu etc mysql mysql 2welcome to the maria...

解決MariaDB無密碼 可登入

官方對此的解釋為 即通過系統認出是root直接認證,但是如果想換成必須用密碼就需要改了這個模式 select user,plugin from user 結果如果為 unix socket 就需要修改模式 按照官網的說明修改就行 alter user root localhost identifie...

不用程式設計就可以做好的事情

這兩天做了三件事,都是貌似要寫乙個軟體而我找到了代替的方案,一行 也不用寫。其二是,有人要統計一萬多份調查問卷,問卷內容很簡單 20個人中選10個,在選中的人名字下面打勾。原來我曾經寫了乙個程式幫他們做更複雜的錄入輔助兼統計,用到delphi c s模式,firebird做後台資料庫。這次的因為相對...