2017-11-25 48 views
0

我以前在Ubuntu上有一個MySQL服務器實例,但出於安全原因,我決定使用兩個實例,因爲測試和prod應用程序將爲Web用戶開放。因此我配置了兩個MySQL服務器實例並運行mysqld_multi start來設置數據庫。我/etc/mysql/my.cnf:如何更改MySQL實例root用戶密碼?

[mysqld0] 
!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 
user=mysql 
pid-file=/var/run/mysqld/mysqld0.pid 
socket=/var/run/mysqld/mysqld0.sock 
port=3306 
datadir=/home/prod/data 
log_error=/var/log/mysql/error0.log 

[mysqld1] 
!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 
user=mysql 
pid-file=/var/run/mysqld/mysqld1.pid 
socket=/var/run/mysqld/mysqld1.sock 
port=3307 
datadir=/home/test/data 
log_error=/var/log/mysql/error1.log 

使用mysqld_multi start 0,1我開始兩個實例,但不能用root用戶訪問它們 - 歌廳拒絕訪問根在本地主機上。

我試圖按照這些說明(提供額外的--socket參數)https://support.rackspace.com/how-to/mysql-resetting-a-lost-mysql-root-password/,因爲他們以前幫助我,但沒用。

當以安全模式連接到MySQL時,我還會看到以前在原始實例中設置的用戶。

也許我理解多個MySQL服務器實例以及它們應該如何以錯誤的方式工作?所有實例是否共享相同的用戶?我如何訪問新創建的實例?

回答

1

必須使用其他參數運行mysqld_safe - 爲每個實例mysqld_safe --mysqld=/usr/sbin/mysqld --basedir=/home/test/data/mysql --datadir=/home/test/data --skip-grant-tables提供目錄。之後,一切都如預期

0

這裏是你如何能做到這在SQL

對於MySQL 5.7.6或更高版本,你可以做

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword'; 

或者爲MySQL 5.7.5或更早的版本,你可以做

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword'); 
+0

這是怎麼不同於'更新用戶設置authentication_string =密碼(「mynewpassword」)其中用戶='根';'?成功運行此更新後,我無處可去:/ – user435421

+0

我試圖運行這些查詢,並且懷疑我收到了由於--skip-grant-tables而無法執行的消息。 – user435421