Если я сделаю это SHOW GRANTS
в своей базе данных mysql, я получу
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
Если не ошибаюсь, root@localhost
значит, пользователь root
может получить доступ к серверу только из localhost
. Как мне сказать MySQL предоставить root
разрешение на доступ к этому серверу mysql с любой другой машины (в той же сети)?
mysql
connection
grant
Aufwind
источник
источник
localhost
в%
предоставит корневой доступ к публичной сети. Не забудьтеflush privileges;
Ответы:
Это дает root-доступ с тем же паролем с любой машины в
*.example.com
:Если разрешение имен не работает, вы также можете предоставить доступ по IP-адресу или подсети:
GRANT
Документы по синтаксису MySQL .источник
...TO 'root'@'%' IDENTIFIED...
, предоставил бы доступ отовсюду?SHOW GRANTS
все равно показывает то же самое (как в моем вопросе). Я даже это сделалFLUSH PRIVILGES
. Я что-то скучаю?FLUSH PRIVILEGES
. Выйдите из системы и снова войдите, перезапустите службу mysqld, если у вас есть доступ. Кроме того, убедитесь, чтоskip networking
линия не включена в вашем,my.cnf
хотя это не будет учитывать, что выSHOW GRANTS
все еще не то же самое.IDENTIFIED BY PASSWORD
он сопровождается хешированным 41-значным шестнадцатеричным числом. Используйте,IDENTIFIED BY 'password'
если вы хотите указать пароль напрямую.Пытаться:
источник
Pa55w0rd
кажется глупым, не говори мне, что это пароль, который ты хочешь создать. Для всех, кто пытается войти в ваш mysql?FLUSH PRIVILEGES;
Вам нужно предпринять некоторые шаги, чтобы убедиться, что сначала mysql, а затем пользователь root доступен извне:
Отключить
skip-networking
вmy.cnf
(то есть:/etc/mysql/my.cnf
)Проверьте значение
bind-address
inmy.cnf
, если оно установлено127.0.0.1
, вы можете изменить его,0.0.0.0
чтобы разрешить доступ со всех IP-адресов или любого IP-адреса, с которого вы хотите подключиться.Предоставьте удаленный доступ пользователю root с любого ip (или укажите свой ip вместо
%
)Перезапустите службу mysql:
источник
*.* = DB.TABLE
вы можете ограничить пользователя определенной базой данных и конкретной таблицей.'root'@'%'
вы можете изменить root с любым пользователем, которого вы создали, а% - разрешить все IP. Вы можете ограничить его, изменив% .168.1.1 и т. Д.Если это не помогает, измените также my.cnf или my.ini и прокомментируйте эти строки.
bind-address = 127.0.0.1
к#bind-address = 127.0.0.1
и
skip-networking
к#skip-networking
Raspberry Pi, я нашел конфигурацию адреса привязки в
\etc\mysql\mariadb.conf.d\50-server.cnf
источник
*.*
и'user'@'address'
часть. Спасибо! :)Гранты SQL, которыми делятся другие, действительно работают. Если вы все еще не можете получить доступ к базе данных, возможно, у вас есть ограничение брандмауэра для порта. Это зависит от типа вашего сервера (и любых промежуточных маршрутизаторов) относительно того, как открыть соединение. Откройте входящий TCP-порт 3306 и задайте ему аналогичное правило доступа для внешних компьютеров (all / subnet / single IP / etc.).
источник
Откройте
/etc/mysql/mysql.conf.d/mysqld.cnf
файл и прокомментируйте следующую строку:источник
В моем случае я пытался подключиться к удаленному серверу mysql на центовой ОС. После множества решений (предоставление всех привилегий, удаление привязок ip, включение сети) проблема все еще не решалась.
Как оказалось, при рассмотрении различных решений я наткнулся на iptables, из-за чего я понял, что порт 3306 mysql не принимает соединения.
Вот небольшая заметка о том, как я проверил и решил эту проблему.
-Добавление правила таблицы IP для разрешения подключений к порту:
-Не рекомендую это для производственной среды, но если ваши iptables не настроены должным образом, добавление правил может не решить проблему. В этом случае необходимо сделать следующее:
Надеюсь это поможет.
источник
Два шага:
настроить пользователя с подстановочным знаком:
create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
vim /etc/my.cnf
добавить следующее:
bind-address=0.0.0.0
перезапустите сервер, у вас не должно возникнуть проблем с подключением к нему.
источник
В mysql 8 и более поздних версиях вы не можете добавить пользователя путем предоставления привилегий. это означает с этим запросом:
mysql вернет эту ошибку:
это означает, что у вас нет пользователя root для% domain. поэтому вам нужно сначала вставить пользователя, а затем предоставить такие привилегии:
Не забудьте заменить пароли своими конкретными паролями.
источник
Это сработало для меня. Но возникла странная проблема, и даже я сначала попробовал те, на которые она не повлияла. Я обновил страницу phpmyadmin, и она как-то заработала.
Если вам нужен доступ к local-xampp-mysql. Вы можете перейти в xampp-shell -> открыть командную строку.
Затем mysql -uroot -p --port = 3306 или mysql -uroot -p (если установлен пароль). После этого вы можете предоставить доступ со страницы оболочки mysql (также может работать с localhost / phpmyadmin).
Просто добавьте их, если кто-то найдет эту тему и у вас возникнут проблемы с новичком.
источник
Ubuntu 18.04
Установите и убедитесь, что mysqld запущен.
Войдите в базу данных и настройте пользователя root:
Отредактируйте разрешения mysqld и перезапустите:
С другой машины проверьте .. Порт Obvs (3306) на машине mysqld должен разрешать соединение с тестовой машины.
Вся дополнительная «безопасность» MySql совсем не способствует безопасности, она просто усложняет и запутывает, теперь на самом деле легче облажаться, чем в старые времена, когда вы просто использовали очень длинный пароль.
источник