У меня есть бродячий файл, использующий Puppet для настройки MySQL.

Вот соответствующий код в default.pp:

class { '::mysql::server':
  override_options => { 'mysqld' => { 'bind_address' => '0.0.0.0' } },


  grants => {
    'root@10.0.2.2/*.*' => {
      ensure     => 'present',
      options    => ['GRANT'],
      privileges => ['ALL'],
      table      => '*.*',
      user       => 'root@10.0.2.2',
    },
  },
}

Это работает, но с хост-машины (не из виртуальной машины) я могу получить доступ к mysql только через 127.0.0.1, и я хочу иметь возможность доступа через localhost (по умолчанию для клиента mysql).

Итак, мои вопросы:1) каково значение 10.0.2.2? (скопировал и вставил это из примера) 2), как я могу настроить установку mysql на ВМ, чтобы она была доступна из хост-ОС (mac) как

mysql -u root -h localhost

Я также должен отметить, что я попытался изменить root@10.0.2.2 на root @ localhost, и это не сработало.

Спасибо! Фил

2 ответа2

0
  1. 10.0.2.2, вероятно, является виртуальным IP-адресом экземпляра гостевой ОС, использующего VirtualBox в сети HostOnly.

Вы должны иметь возможность подключиться к серверу mysql в гостевом экземпляре, используя

mysql -u root -h 10.0.2.2
  1. "localhost" имеет особое значение в MySQL, он заставляет клиентов пытаться подключаться через доменные сокеты Unix вместо TCP. Поэтому он пытается подключиться с помощью файла сокета, обычно это либо /tmp/mysql.sock либо /var/run/mysql/mysql.sock , и это специальные файлы, доступные только локально для процессов в одном экземпляре операционной системы.

Однако ваша виртуальная машина - это другой экземпляр ОС, и поэтому ваш клиент mysql в хост-системе не может получить доступ к файлам сокетов домена в гостевой ОС.

0

10.0.2.2 означает, для какого удаленного IP вы предоставляете доступ пользователю, изучив шаблон vagrant puphpet vagrant/puphpet/puphpet/node /Mysql.pp, вы можете увидеть манифест определения шаблона, код ruby:

  each( $grants ) |$key, $grant| {
    # if no host passed with username, default to localhost
    if '@' in $grant['user'] {
      $user = $grant['user']
    } else {
      $user = "${grant['user']}@localhost"
    }

поэтому пользователь должен настроить yaml puphpet как

grants:
     mysql:
         user: dbuser@%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .