Есть mysql в которой несколько бд с разными юзерами. Создал новую бд от рута и юзера под эту бд. Дал юзеру на эту бд ALL PRIVILEGES но он ее все равно не видит. И новым юзером создать бд не могу, или новому юзеру надо было grant all давать... но это два супер юзера тогда будет?
я проверял, дал, причем потом добавил даже WITH GRANT OPTION и проверил SHOW GRANTS показывает что есть права...ну сейчас попробую перезагрузить привилегии проверю..
Вот что означает эта фраза? БД - это, знаете ли, не папка в эксплорере и не компьютер соседа в сетевом окружении, чтобы её "видеть".
Новый юзер подключиться к серверу через CLI - может?
Если нет - какие сообщения об ошибках выводятся?
Если может - то что возвращается в ответ на команду USE new_database_name?
потом добавил даже WITH GRANT OPTION
Зачем? этот пользователь будет давать права на эту БД и её объекты другим пользователям?
Akina, не видит никак. Логинюсь под новым юзером, смотрю новую бд созданную рутом, show databases; нужной бд нет. и доступа к ней так же нет. Под рутом нужная бд есть и доступ к ней есть.
Что касается grant option я просто проверил изменится, что то или нет. Пока ничего не сдвинулось....
Денис, Пожалуйста, воспроизведите все команды по созданию пользователя и назначению ему привилегий. Имя пользователя и пароль (только их!) можете заменить на new_username и new_password соответственно.
Также после того, как пользователь подключился к серверу, выполните запрос: SELECT CURRENT_USER, USER();
и покажите результат вывода.
Дополнительно - укажите IP-адреса сервера и клиента, а также проверьте, допускает ли сервер внешние подключения с адреса клиента.
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON db_name.db TO 'user'@'%';
и так же потом создал юзера такого же для localhost, команды все те же.
вот вывод после подключения
+--------------------+--------------------+
| current_user | user() |
+--------------------+--------------------+
| user@localhost | user@localhost |
+--------------------+--------------------+
но так как бд и прокт в одном месте лежат я думаю localhost юзера достаточно...
В приведённом коде db - это таблица в базе данных db_name. И даже если такая таблица там имеется, права на таблицу никаких прав на саму БД пользователю не дают.
потом создал юзера такого же для localhost,
Лучше так не делать. Вот попробуйте найти в документации, какая из двух учёток будет использована при локальной аутентификации - ведь подходят-то обе... и если не найдёте - можете смело считать, что будет выбрана одна из двух от фонаря. И если у них привилегии совпадают - то нафига нужна частная? а если не совпадают - можете нарваться на то, что в очередном сеансе у юзера вдруг почему-то не окажется привилегий, которые вроде бы были "вот только что".
да, спасибо, вижу косяк, теперь все норм, я переделал. Тех двух юзеров я удалил, создал нового дал права, все заработало. Единственное один из старых юзеров не удаляетья из бд. Но зайти под ним нельзя и вообще ничего сделать нельзя...
один из старых юзеров не удаляетья из бд. Но зайти под ним нельзя и вообще ничего сделать нельзя...
надо разбираться, почему такое... и если это не служебный аккаунт, удаление которого блокируется сервером, то надо исправлять ситуацию. Негоже хранить неиспользуемый хлам. Может, на самом деле под ним можно сделать всё, что угодно, в том числе злонамеренное, если знать, как им залогиниться...