2017-02-15 77 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会用自己生成的配置覆盖这个文件。

相关问题