困擾了很久的問題,,
使用apt-get來安裝mysql,安裝好之後發現安裝的是 mariadb,如下,無需密碼既可以登入了。即使使用mysqladmin設定好密碼,用密碼登入可以,不用密碼登入也可以
1 root@ubuntu:/etc/mysql# mysql2welcome to the mariadb monitor. commands end with ; or \g.
3 your mariadb connection id is
354 server version: 10.0.31-mariadb-0ubuntu0.16.04.2 ubuntu 16.04
5, oracle, mariadb corporation ab and others.
78 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.cnf2 # 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
1415
看了說明是以上由指令碼生成,不要改動,
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 +-----------+-----------------------+
88 rows in
set (0.00 sec)
1不正常的
23 mariadb [(none)]> select user, plugin from
mysql.user;
4 +------+-------------+
5 | user | plugin |
6 +------+-------------+
7 | root | unix_socket |
8 +------+-------------+
91 row in
set (0.00 sec)
看到這裡應該發現問題了,按照正常的修改就行了
如下:
1sudo 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 +------+-----------------------+
141 row in
set (0.01
sec)
1516 先殺死mysql kill -9
pid17
啟動:18 sudo service mysql start
最後驗證下:需要密碼了
root@ubuntu:~# mysqlerror
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 2 welcome to the mari...
解決MariaDB無密碼 可登入
官方對此的解釋為 即通過系統認出是root直接認證,但是如果想換成必須用密碼就需要改了這個模式 select user,plugin from user 結果如果為 unix socket 就需要修改模式 按照官網的說明修改就行 alter user root localhost identifie...
不用程式設計就可以做好的事情
這兩天做了三件事,都是貌似要寫乙個軟體而我找到了代替的方案,一行 也不用寫。其二是,有人要統計一萬多份調查問卷,問卷內容很簡單 20個人中選10個,在選中的人名字下面打勾。原來我曾經寫了乙個程式幫他們做更複雜的錄入輔助兼統計,用到delphi c s模式,firebird做後台資料庫。這次的因為相對...