Настройка diesel_cli возвращает ошибку относительно DATABASE_URL

Я пытаюсь настроить Diesel-CLI, но всегда возвращает ошибку, касающуюся DATABASE_URL.

Для этого вопроса предположим:

  • пользователь = корень
  • пароль = # Abcd1234
  • хост = localhost
  • база данных = codeforces
  • сокет сервера mysql = / var / lib / mysql / mysql.sock /


For DATABASE_URL=mysql://root:#Abcd1234@localhost/codeforces  
and DATABASE_URL=mysql://root:#Abcd1234@localhost/codeforces.sql?socket=(/var/lib/mysql/mysql.sock)

Ошибка: неизвестный хост сервера MySQL 'root' (-2)

For DATABASE_URL=mysql://root@localhost/codeforces  
and DATABASE_URL=mysql://root@localhost/codeforces?socket=(/var/lib/mysql/mysql.sock)

Ошибка: не удается подключиться к локальному серверу MySQL через сокет '/run/mysql/mysql.sock' (2)

For DATABASE_URL=mysql://[email protected]/codeforces

Ошибка: доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: NO)

For DATABASE_URL=mysql://root:#[email protected]/codeforces

Ошибка: неизвестный хост сервера MySQL 'root' (-2)


Я пробовал погуглить, но пока безрезультатно. Я не знаю, где я делаю ошибку.

Итак, мой вопрос:
Как исправить эту ошибку?


person Dipanshu Kumar Suman    schedule 16.05.2020    source источник
comment
# - это специальный символ в URL-адресах, поэтому я не думаю, что вы можете использовать его в таком пароле. Все, что будет после этого, будет фактически проигнорировано.   -  person Frxstrem    schedule 16.05.2020
comment
да, теперь это сработало, когда я сменил пароль на что-то другое. Спасибо @Frxstrem   -  person Dipanshu Kumar Suman    schedule 16.05.2020


Ответы (1)


Мой DATABASE_URL не работал, потому что я использовал зарезервированные символы в URL-адресе.

Из спецификации RFC 1738:

Только буквенно-цифровые символы, специальные символы «$ -_. +! * '(),» И зарезервированные символы, используемые для их зарезервированных целей, могут использоваться без кодирования в URL-адресе.

Для тех, кто получает эту ошибку при изменении localhost на 127.0.0.1:

Ошибка: плагин caching_sha2_password не может быть загружен: /usr//usr/lib64/mysql/plugin//caching_sha2_password.so: невозможно открыть файл общих объектов: нет такого файла или каталога

Попробуйте сделать это (у меня это сработало):

mysql> ALTER USER 'yourusername' @ 'localhost' ИДЕНТИФИЦИРОВАН mysql_native_password ПО 'yourpassword';

person Dipanshu Kumar Suman    schedule 16.05.2020