2017-02-15 108 views
0

在過去的幾個小時裏,我已經通過幾個線程瞭解與puppetlabs-mysql模塊相關的問題,以解決我的問題。Puppet MySQL禁用無密碼root用戶登錄

使用此模塊在我的代理節點上安裝MySQL將啓用root用戶無需任何密碼登錄。但是我看到已經爲root用戶設置了憑證,並且也可以使用這些憑證進行登錄。

我應該在我的清單中禁用MySQL無密碼root登錄?

清單應用,

class { '::mysql::server': 
    root_password => 'rootpassword', 
    override_options => { 'mysqld' => { 'max_connections' => '1024' } } 
} 
+1

其可能設置爲「root」@「localhost」而不是「root」的密碼@'%'' – ptierno

+0

Thanks @ptierno。關於清單部分的任何想法都是一樣的? –

+0

只需使用mysql_user資源:(抱歉破碎格式化) 'mysql_user { '根@%': 確保=>本, password_hash => mysql_password( 'rootpassword'), }' – Ben

回答

1

什麼你指的是作爲密碼登錄是最有可能.my.cnfoptionfile保存密碼。

所以通過設置$ mysql :: server :: create_root_my_cnf爲false,你可以禁用它。

class { '::mysql::server': 
    root_password => 'rootpassword', 
    create_root_my_cnf => false, 
    override_options => { 'mysqld' => { 'max_connections' => '1024' } } 
} 
+0

是的,這是正確。該清單將在我的根(shell)用戶下創建.my.cnf。這意味着,它會提示從其他shell用戶獲取mysql root密碼。 我試過你的例子。它的工作原理,謝謝。 但這件事情是,它會拋出進一步的用戶,數據庫創作錯誤。 猜測有更多的線程, 錯誤:無法應用目錄:執行'/ usr/bin/mysql -NBe SELECT CONCAT(用戶,'@',主機)AS用戶FROM mysql.user'返回1:錯誤1045(28000):拒絕訪問用戶'root'@'localhost'(使用密碼:否)' –

+0

我的清單, 'class {':: mysql :: server': root_password =>'rootpassword', create_root_my_cnf =>假, override_options => { '的mysqld'=> { 'MAX_CONNECTIONS'=> '1024'}}} MySQL的::分貝{ 'MYDB': 用戶=> '用戶', 密碼=>'pass', host =>'localhost', grant => ['SELECT ','UPDATE'], }' –

+0

此外,我還嘗試了你的第一個清單示例, 'mysql_user {'root @%':ensure => present,password_hash => mysql_password('rootpassword'),}'。 它以某種方式工作,不創建我認爲的文件,創建沒有任何密碼的mysql root用戶。意思是我不能用'mysql'命令登錄,但用'mysql -u root -p'接受一個空密碼。 這樣,它不會在創建任何其他用戶,數據庫組合時拋出錯誤。 –

1

我有同樣的問題,對我來說,創建一個簡單的〜根/ .my.cnf文件修復了這個問題。將以下內容添加到根.my.cnf文件中:

[client] 
password="mysql root user password here" 

這允許木偶再次連接到mysql。然後Puppet會用自己生成的配置覆蓋這個文件。

相關問題