2016-10-16 2 views
1

Я запускаю Homestead через Vagrant для локальной установки Laravel. Я вошел в Homestead через SSH (бродяга SSH) и подключен к MySQL с помощью хоста локальный, пользователь приусадебных, пароль секрет. Мне удалось успешно подключиться и запустить базы данных ; говорит мне, что там есть база данных information_schema. Я думал, что все хорошо, и я мог бы создать новую базу данных для моего проекта Laravel и начать работу.Сбросить пароль MySQL на Homestead

К сожалению, эксплуатация CREATE DATABASE mynewdb; вернулся:

ERROR 1044 (42000): Доступ запрещен для пользователя 'усадьбы' @ 'локальный' в базу данных 'mynewdb'

Я пытался дать пользователю Homestead еще несколько привилегий через:

GRANT ALL PRIVILEGES ON mynewdb.* TO 'homestead'@'localhost' WITH GRANT OPTION; 

Но получить обратно аналогичный доступ запрещен сообщение:

Access denied for user 'homestead'@'localhost' (using password: YES) 

я попробовал несколько других вариантов этой команды, используя «%» вместо «локальный», например, , но похоже, что мой пользователь-хозяин просто не имеет привилегий, необходимых для полного администрирования этого db.

Я думал, что должен просто перезапустить службу mysql с флагом -skip-grant-tables, а затем войти в качестве усадьбы или root и иметь полные привилегии. Это также не работает:

[email protected]:~$ sudo /etc/init.d/mysql stop 
[....] Stopping mysql (via systemctl): mysql.servic[.ok 

[email protected]:~$ sudo /etc/init.d/mysql start --skip-grant-tables 
[....] Starting mysql (via systemctl): mysql.servic[.ok 

[email protected]:~$ mysql -h localhost 
ERROR 1045 (28000): Access denied for user 'vagrant'@'localhost' (using password: NO) 
[email protected]:~$ mysql -h localhost -u homestead 
ERROR 1045 (28000): Access denied for user 'homestead'@'localhost' (using password: NO) 
[email protected]:~$ mysql -h localhost -u root 
ERROR 1698 (28000): Access denied for user 'root'@'localhost' 
[email protected]:~$ mysql 
ERROR 1045 (28000): Access denied for user 'vagrant'@'localhost' (using password: NO) 

После этих попыток, я вошел в с усадьбой и тайны, просто чтобы проверить и посмотреть, если что-то изменилось:

[email protected]:~$ mysql -h localhost -u homestead -p 
mysql> create database mynewdb; 

ERROR 1044 (42000): Доступ запрещен для пользователя 'приусадебных @ «локальный» в базу данных «» mynewdb

Наконец, я заметил в моем файле homestead.yml, что есть запись, которая выглядит следующим образом:

databases: 
- homestead 

Я изменил эту запись:

databases: 
- homestead 
- mynewdb 

А потом перезагрузил приусадебный VM:

vagrant halt 
vagrant up 

А потом снова попытался создать новый datbase с пользователем приусадебных MySQL. Ничто из этого не делало ничего, доступ все еще полностью отрицается, если пользователь усадьбы пытается что-то сделать.

Предложения по доступу?

+0

Извините, я немного смущен. Создана ли база данных 'mynewdb'? Если нет, имеет ли пользователь усадьбы разрешение на создание новых баз данных? – Terminus

+0

mynewdb еще не создан. Кажется, что у хозяина нет никаких прав на создание новых баз данных. Все, что я читаю в Интернете, говорит, что пользователь homestead должен приравниваться к root и иметь полные разрешения. Я предполагаю, что есть вероятность, что разрешения были перепутаны/перезаписаны в какой-то момент в прошлом. Все, что мне нужно сделать, это сбросить разрешения без доступа к учетной записи root. У меня есть серверный доступ к дому, поэтому я могу перезапустить MySQL, отключить его и т. Д. Как получить доступ без полной переустановки MySQL? – carbide20

+0

Я добавил еще несколько вопросов о том, как я попытался перезапустить службу mysql с помощью -skip-grant-tables и не смог. – carbide20

ответ

0

Чтобы войти в MySQL суперпользователя, вы можете использовать:

mysql -u root -p 

, а затем введите пароль MySQL.

Чтобы зарегистрироваться как еще один пользователь, вам необходимо сначала создать этого пользователя и предоставить ему привилегии.

Создайте пользователя - измените newuser на нужное имя пользователя и пароль на ваш пароль.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 

К сожалению, на данный момент у newuser нет разрешений на создание базы данных. Поэтому первый этап - предоставить пользователю привилегии делать «вещи». Чтобы предоставить все привилегии (выбирать, создавать, удалять, обновлять, падение и т.д.) на всех баз данных и таблиц, выполните команду:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost'; 

Чтобы предоставить определенную привилегию на определенной базе данных и таблицы, просто запустите:

GRANT [type of privilege] ON [database name].[table name] TO '[username]'@'localhost'; 

Если вы когда-нибудь понадобится, чтобы запретить или отменить определенную привилегию, просто запустите:

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost'; 
+0

Спасибо, я знаком со всем этим, но мой вопрос конкретно связан с Homestead, где я не знаю пароль пользователя root. Все, что я вижу по этой теме, просто говорит, чтобы использовать пользователя homestead, однако, как мне кажется, у меня нет каких-либо полезных привилегий, я немного застрял. Есть ли пароль для пользователя root, который я не могу найти? Если нет, я предполагаю, что есть способ перезагрузить MySQL, не требуя привилегий, а затем создать нового пользователя и назначить им полные права. Я просто не уверен, как это сделать. Благодаря! – carbide20

0

у меня не было терпения, чтобы попытаться решить эту проблему, так как это явно не действует прямо на всех. Я, наконец, только что уничтожил Hostest VM и все его файлы после резервного копирования моей конфигурации и переустановил машину. Загрузите его и как пользователь усадьбы имеет полный доступ, как должен. Не уверен, что могло произойти с ним в прошлый раз, но урок здесь: Инициализация новых виртуальных машин дешевая, борьба с неправильными разрешениями стоит дорого.

Если у кого есть объяснение, как я мог бы это исправить, я приму их ответ. В противном случае переустановка Homestead представляется самым быстрым решением.