Как я создаю свой собственный протокол URL? (например, so://…) [закрытый]

Предупреждение: mysql_connect (): доступ запрещен для имени пользователя '@' host '

Это предупреждение появляется при подключении к серверу MySQL / MariaDB с недопустимыми или отсутствующими учетными данными (имя пользователя / пароль). Таким образом, это обычно не проблема с кодом, а проблема конфигурации сервера.

  • См. Справочную страницу в mysql_connect("localhost", "user", "pw") для примеров.

  • Убедитесь, что вы действительно использовали кнопки $username и $password.

    • Необычно, что вы получаете доступ без пароля - вот что произошло, когда Предупреждение: сказано (using password: NO).
    • Только локальный тестовый сервер обычно позволяет подключаться с именем пользователя root, без пароля и с именем базы данных test.

    • Вы можете проверить, действительно ли они исправлены с помощью клиента командной строки:
      mysql --user="username" --password="password" testdb

    • Имя пользователя и пароль с учетом регистра и пробел не игнорируется. Если ваш пароль содержит метасимволы, такие как $, откройте их или поместите пароль в одиночные кавычки .

    • Большинство хостинг-провайдеров предопределяют учетные записи mysql в отношении учетной записи пользователя unix (иногда просто префиксы или дополнительные числовые суффиксы). См. Документы для шаблона или документации, а также CPanel или любой другой интерфейс для установки пароля.

    • См. Руководство по MySQL в Добавление учетных записей пользователей с помощью командной строки. При подключении к администратору вы можете выдать запрос, например:
      CREATE USER 'username'@'localhost' IDENTIFIED BY 'newpassword';

    • Или использовать Администратор или [ 1137] WorkBench или любой другой графический инструмент для создания, проверки или исправления данных учетной записи.

    • Если вы не можете исправить свои учетные данные, тогда запрос в Интернете «пожалуйста, помогите» не будет иметь никакого эффекта. Только у вас и вашего хостинг-провайдера есть разрешения и достаточный доступ для диагностики и исправления.

  • Убедитесь, что вы могли достигнуть сервера базы данных, используя имя хоста, указанное вашим провайдером:
    ping dbserver.hoster.example.net

      ]
    • Проверьте это с консоли SSH непосредственно на своем веб-сервере. Тестирование с вашего локального клиента разработки на ваш хостинг-сервер редко имеет смысл.

    • Часто вы просто хотите, чтобы имя сервера было "localhost", которое обычно использует локальный именованный сокет, когда он доступен. В других случаях вы можете попробовать "127.0.0.1" как резерв.

    • Если ваш сервер MySQL / MariaDB прослушивает другой порт, используйте "servername:3306".

    • Если это не удается, тогда есть проблема с брандмауэром.

  • При использовании констант , таких как, например, [11144]. DB_USER или DB_PASSWORD, убедитесь, что они на самом деле определены .

    • Если вы получите "Warning: Access defined for 'DB_USER'@'host'" и "Notice: use of undefined constant 'DB_PASS'", то это ваша проблема.

    • Убедитесь, что ваш, например, xy/db-config.php был фактически включен и что угодно.

  • Проверьте правильность установки GRANT разрешений .

    • Недостаточно иметь пару username + password.

    • Каждая учетная запись MySQL / MariaDB может иметь прикрепленный набор разрешений.

    • Те могут ограничить, к каким базам данных вам разрешено подключаться, из которых клиент или сервер может возникнуть соединение и какие запросы разрешены.

    • Предупреждение «Доступ запрещен» может также отображаться для вызовов mysql_query , если у вас нет прав на SELECT из определенной таблицы или INSERT / UPDATE, и чаще всего DELETE.

    • Вы можете адаптировать разрешения учетной записи при подключении к каждому клиенту командной строки с помощью учетной записи администратора с запросом типа:
      GRANT ALL ON yourdb.* TO 'username'@'localhost';

  • Если предупреждение появляется сначала с помощью Warning: mysql_query(): Access denied for user ''@'localhost', тогда у вас может быть php.ini-preconfigured учетной записи / пароля .

    • Убедитесь, что mysql.default_user= и mysql.default_password= имеют значимые значения.

    • Часто это конфигурация провайдера. Поэтому обратитесь к их поддержке несоответствий.

  • Найдите документацию вашего хостинг-провайдера:

  • Обратите внимание, что вы также можете исчерпать доступный пул соединений . Вы получите доступ к запрещенным предупреждениям для слишком большого количества параллельных подключений.

  • Ваша версия клиента libmysql может быть несовместимой с сервер базы данных. Обычно MySQL и MariaDB-серверы можно получить с помощью PHP, скомпилированных в драйвере. Если у вас есть пользовательская настройка или устаревшая версия PHP, а также гораздо более новый сервер базы данных или значительно устаревший - тогда несоответствие версии может препятствовать подключению. (Нет, вам нужно исследовать себя. Никто не может угадать вашу настройку).

Дополнительные ссылки:

Кстати, вы, вероятно, больше не хотите использовать функции mysql_* [1156 ]. Новички часто мигрируют в mysqli , что, однако, так же утомительно. Вместо этого прочитайте в PDO и подготовленные утверждения .
$db = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");

blockquote>

202
задан Cœur 9 July 2018 в 04:18
поделиться

8 ответов

Часть с HTTP://, FTP://, и т.д. называют Схемы URI

, можно зарегистрировать собственное через реестр.

HKEY_CLASSES_ROOT/
  your-protocol-name/
    (Default)    "URL:your-protocol-name Protocol"
    URL Protocol ""
    shell/
      open/
        command/
          (Default) PathToExecutable

Источники: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml, http://msdn.microsoft.com/en-us/library/aa767914 (v=vs.85) .aspx

193
ответ дан PsychoData 23 November 2019 в 05:00
поделиться

Это отличается для каждого браузера в IE и окнах, необходимо создать то, что они называют сменным обработчиком протокола.

основные шаги следующие:

  1. Реализация интерфейс IInternetProtocol.
  2. Реализация интерфейс IInternetProtocolRoot.
  3. Реализация интерфейс IClassFactory.
  4. Дополнительный. Реализуйте интерфейс IInternetProtocolInfo. Поддержка протокола HTTP оказывается обработчиком транзакций.
  5. , Если IInternetProtocolInfo реализован, окажите поддержку для PARSE_SECURITY_URL и PARSE_SECURITY_DOMAIN, таким образом, менеджер зоны безопасности URL может обработать безопасность правильно. Запишите код для своего обработчика протокола.
  6. Оказывают поддержку для BINDF_NO_UI и BINDF_SILENTOPERATION.
  7. Добавляют подключ для Вашего обработчика протокола в реестре под HKEY_CLASSES_ROOT\PROTOCOLS\Handler.
  8. Создают строковую стоимость, CLSID, под подключом и устанавливают строку на CLSID Вашего обработчика протокола.

См. Об Асинхронных Сменных Протоколах на MSDN для получения дополнительной информации о стороне окон. В окнах SDK существует также образец.

А быстрый Google также показал эту статью о codeproject: http://www.codeproject.com/KB/IP/DataProtocol.aspx .

Наконец, как парень безопасности я должен указать, что этот код должен быть укрепленным сражением. Это в высоком риске, потому что, чтобы сделать это надежно Вы не можете сделать этого в управляемом коде и иметь, чтобы сделать это в C++ (я предполагаю, что Вы могли использовать VB6). Необходимо рассмотреть, необходимо ли действительно сделать это и если Вы делаете, разработайте его тщательно и кодируйте его надежно. Взломщик может легко управлять содержанием, которое передается Вам просто включая ссылку на странице. Например, если у Вас есть простое переполнение буфера тогда, никто лучше не делает это: <a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

Сильно рассматривают использование strsafe и новых безопасных методов CRT, включенных в VC8 и выше компиляторов. См. http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx , если Вы понятия не имеете, о чем я говорю.

38
ответ дан Peter Oehlert 23 November 2019 в 05:00
поделиться

Вот список зарегистрированного схемы URI . У каждого есть RFC - документ, определяющий его, который является почти стандартом. RFC говорит разработчикам новых приложений (таким как браузеры, клиенты ftp, и т.д.), что они должны поддерживать. При необходимости в новом протоколе основного уровня можно использовать незарегистрированный. Другие ответы говорят Вам как. Следует иметь в виду, что можно сделать много вещей с существующими протоколами, таким образом получив их существующие реализации.

18
ответ дан Yuval F 23 November 2019 в 05:00
поделиться

Для большинства продуктов Microsoft (Internet Explorer, Office, "открывают файл" диалоговые окна и т.д.) Вы можете регистрировать приложение , которое будет выполнено, когда URI с соответствующим префиксом открыт. Это - часть более общих объяснение - как реализовать Ваш собственный протокол.

Для Mozilla объяснение здесь , Java - здесь .

4
ответ дан Dmitry Khalatov 23 November 2019 в 05:00
поделиться

Это назвало протокол. Единственная вещь, которая препятствует тому, чтобы Вы делали свой собственный протокол, является Вами, имеют к:

  1. Запись браузер или агент пользователя некоторых видов, который понимает, что протокол, и в его URL формируется и в фактическом формате данных
  2. Запись сервер, который понимает, что протокол
  3. Предпочтительно, имейте спецификацию для протокола так, чтобы браузер и сервер могли продолжить сотрудничать.

Windows делает № 1 действительно легким, во многих случаях это - все, в чем Вы на самом деле нуждаетесь. То есть:

Регистрация Приложения к Протоколу

URL
2
ответ дан JSBձոգչ 23 November 2019 в 05:00
поделиться

Первый раздел называют протоколом, и да можно зарегистрировать собственное. В Windows (где я предполагаю выполнение этого, учитывая тег C# - извините Моно вентиляторы), он сделал с помощью реестра .

1
ответ дан Powerlord 23 November 2019 в 05:00
поделиться

Протокол?

я нашел это, это, кажется, локальная установка для компьютера...

http://kb.mozillazine.org/Register_protocol

0
ответ дан Hugoware 23 November 2019 в 05:00
поделиться

Вы не должны действительно делать никакой регистрации как таковой. Я видел, что много программ, как emule, создают свой собственный протокол specificier (это - то, что я думаю, что это называют). После этого в основном просто необходимо установить некоторые значения в реестре относительно того, какая программа обрабатывает тот протокол. Я не уверен, существует ли какой-либо официальный реестр спецификаторов протокола. Нет действительно очень, чтобы мешать Вам создать Ваш собственный спецификатор протокола для Вашего собственного приложения, если Вы хотите, чтобы люди открыли Ваше приложение от своего браузера.

-9
ответ дан Kibbee 23 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: