Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SaltStack创建Mysql数据库_Mysql_Vagrant_Salt Stack_Devops - Fatal编程技术网

使用SaltStack创建Mysql数据库

使用SaltStack创建Mysql数据库,mysql,vagrant,salt-stack,devops,Mysql,Vagrant,Salt Stack,Devops,我正在使用SaltStack(带vagrant)/Ubuntu 12.04 我的目标是安装Mysql,创建数据库和用户,并授予所有权限 这个SLS文件有什么问题 mysql_setup: debconf.set: - name: mysql-server - data: 'mysql-server/root_password': {'type': 'string', 'value': '{{ pillar['database']['password'] }}'

我正在使用SaltStack(带vagrant)/Ubuntu 12.04

我的目标是安装Mysql,创建数据库和用户,并授予所有权限

这个SLS文件有什么问题

mysql_setup:
  debconf.set:
    - name: mysql-server
    - data:
        'mysql-server/root_password': {'type': 'string', 'value': '{{ pillar['database']['password'] }}'}
        'mysql-server/root_password_again': {'type': 'string', 'value': '{{ pillar['database']['password'] }}'}

mysql-server:
  pkg:
    - installed
    - require:
      - debconf: mysql_setup

mysql-base:
  mysql_database.present:
    - name: owncloud
  mysql_user.present:
    - name: owncloud
    - password: pass
  mysql_grants.present:
    - database: owncloud.*
    - grant: ALL PRIVILEGES
    - user: owncloud
我犯了这个错误:

[INFO    ] All specified answers are already set
[INFO    ] Completed state [mysql-server] at time 14:48:13.611204
[INFO    ] Running state [mysql-server] at time 14:48:13.644547
[INFO    ] Executing state pkg.installed for mysql-server
[INFO    ] Package mysql-server is already installed.
[INFO    ] Completed state [mysql-server] at time 14:48:13.695092
[DEBUG   ] LazyLoaded mysql_database.mod_init
[INFO    ] Running state [owncloud] at time 14:48:13.702359
[DEBUG   ] LazyLoaded mysql_database.present
[ERROR   ] State 'mysql_database.present' was not found in SLS 'mysql'

[DEBUG   ] LazyLoaded mysql_user.mod_init
[INFO    ] Running state [owncloud] at time 14:48:13.710744
[DEBUG   ] LazyLoaded mysql_user.present
[ERROR   ] State 'mysql_user.present' was not found in SLS 'mysql'

[DEBUG   ] LazyLoaded mysql_grants.mod_init
[INFO    ] Running state [mysql-base] at time 14:48:13.733003
[DEBUG   ] LazyLoaded mysql_grants.present
[ERROR   ] State 'mysql_grants.present' was not found in SLS 'mysql'

这在你第二次运行这个州时有效吗?还是在重新启动salt仆从守护进程之后?如果是这样,那是因为mysql_*状态不知道mysql服务器已经安装

您可以在这里看到,
mysql\u grants
状态要求
mysql.grant\u exists
函数已经加载到Salt中

尝试将
-reload\u模块:true
添加到mysql服务器状态,如下所示:

mysql-server:
  pkg:
    - installed
    - require:
      - debconf: mysql_setup
    - reload_modules: True

除了@Utah_Dave所建议的之外,您可能还需要
python mysqldb
APT包以及
mysql
pip包,并且您需要连接信息,可以是在您的仆从配置中,也可以是提供给州政府的,可能是这样的:

foo_db:
  mysql_database.present:
    - name: {{ pillar['SQL_DATABASE'] }}
    - connection_host: {{ pillar['SQL_HOST'] }}
    - connection_user: {{ pillar['SQL_ROOT_USER'] }}
    - connection_pass: {{ pillar['SQL_ROOT_PASSWORD'] }}
    - require:
      - pip: mysql
将来的状态可以使用
use:
重用连接信息,如下所示:

sql_app_user:
  mysql_user.present:
    - name: {{ pillar['SQL_APP_USER'] }}
    - password: {{ pillar['SQL_APP_PASSWORD'] }}
    - host: '%'
    - use:
      - mysql_database: foo_db
这是为以下目的而记录的。要安装其他依赖项,请执行以下操作:

server_pkgs:
  pkg:
    - installed
    - pkgs:
      - python-dev
    - refresh: True

mysql_python_pkgs:
  pkg.installed:
    - pkgs:
      - libmysqlclient-dev
      - mysql-client
      - python-mysqldb
    - require:
      - pkg: server_pkgs

python-pip:
  pkg:
    - installed
    - refresh: False

mysql:
  pip.installed:
    - require:
      - pkg: python-pip
      - pkg: mysql_python_pkgs

这是我自己对某个特定项目状态的简略版本,因此它可能不是您所需要的最基本的东西,但它确实有效。

我知道这是一个老问题,但当我用谷歌搜索错误时,它不断出现:

无法LazyLoad mysql.version:'mysql'virtual返回False:无法加载mysql执行模块:MySQLdb和PyMySQL都不可用

我使用的是Ubuntu18.04,解决这个问题的方法是安装这个软件包

python3mysqldb

显然,Python2.7和3都已安装,salt使用的是3,而python mysqldb包仅适用于2.7


我希望这将有助于其他人在这个问题上犯同样的错误

注释:未找到以下必备条件:require:pip:mysql
作为“读者练习”:)为了清晰起见,我将更新我的答案以添加这些内容。谢谢。我正试图这样做,有同样的问题。我会让你了解最新情况。