我正在尝试执行原始sql来创建具有少量授权的用户,但是却收到未定义的方法错误。我正在使用数据库厨师食谱的v4.0.9。
mysql_database[create random grants] action query
================================================================================
Error executing action `query` on resource 'mysql_database[create datadog grants]'
================================================================================
NoMethodError
-------------
undefined method `close' for nil:NilClass
Cookbook Trace:
---------------
/tmp/kitchen/cache/cookbooks/database/libraries/provider_database_mysql.rb:153:in `close_query_client'
Resource Declaration:
---------------------
# In /tmp/kitchen/cache/cookbooks/xxxx/recipes/xxxxxx.rb
156: mysql_database 'create random grants' do
157: connection mysql_connection_info
158: sql "GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'testuser'@'localhost' IDENTIFIED BY 'dummy';"
159: #sql 'SELECT 1'
160: action :query
161: end
162:
答案 0 :(得分:2)
如果您使用database
cookbook,则很久以前就不推荐使用它-它的开发已于2年前停止,并且其存储库已存档。
这是弃用消息:
此菜谱已被弃用。最初的目的是使数据库实现详细信息远离最终用户。事后看来,这是一个错误,因为很难/不可能为跨所有系统工作的数据库创建通用接口。相反,我们计划将各个提供程序迁移到各自的食谱(mysql,postgresql,sqlite,sql_server)中,以便他们可以充分利用基础数据库系统的功能集。
我建议您远离本食谱。
答案 1 :(得分:1)
我处于同一位置,并且正在使用此已弃用的食谱。为了运行该资源,您需要使用特定的食谱修订版-depends 'database', '4.0.8'
因此,如果将其添加到metadata.rb
中,则上面的代码将起作用。
这是我这边的代码:
mysql_database 'create slave user' do
connection mysql_connection_info
sql "GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '#{slave_password_data_bag_item['password']}'"
action :query
end