Ошибка odbc sqlstate hy000 номер ошибки 1045

Есть сторонний серв с MySQL, надо подключиться. Поставил клиент MySQL, ввел данные авторизации — все ок.

теперь с 1С.

поставил драйвер, добавил внешний источник данных, ввел данные подключения — вижу таблицы, все ок.

пишу:

ПараметрыСоединенияБиллинг = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;

ПараметрыСоединенияБиллинг.СтрокаСоединения= »

|DRIVER={MySQL ODBC 5.1 Driver};

|SERVER=111.111.11.11;

|DATABASE=voip;

|UID=1111;

|PWD=11111111″;

ВнешниеИсточникиДанных.Биллинг.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединенияБиллинг);

ВнешниеИсточникиДанных.Биллинг.УстановитьСоединение();

пишет ошибку:

{Форма.Форма.Форма(85)}: Ошибка при вызове метода контекста (УстановитьСоединение)

ВнешниеИсточникиДанных.Биллинг.УстановитьСоединение();

по причине:

Ошибка ODBC. SQLSTATE: HY000

Номер ошибки: 1045

Описание: [MySQL][ODBC 5.1 Driver]Access denied for user ‘ODBC’@’111.111.11.111’ (using password: NO)

почему так? почему подключается под ODBC, хотя в строке соединения четко прописан логин?

when am trying to open mysql in windows cmd by typing mysql. the following error is occuring.

ERROR 1045 (28000): Access denied for user ODBC@localhost (using password: NO)

And then by looking similar queries i somehow got a temporary solution by using
C:> mysql -u root -p and then typing the password, mysql is working. But when i close and open, the same problem is recurring.

One more thing is that i have created a user ‘admin’. but when am trying to open mysql using the command C:> mysql --user=admin --password=root, the following error is occuring:

C:Usersabhay kumar>mysql --user=admin --password=root
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password:NO)

Any help will great

asked May 30, 2014 at 9:00

user3690599's user avatar

1

for some reason, the ODBC user is the default username under windows even if you didn’t create that user at setup time. simply typing

mysql

without specifying a username will attempt to connect with the non-existent ODBC username, and give:

Error 1045 (28000): Access denied for user ‘ODBC’@’localhost’ (using password: NO)

Instead, try specifying a username that you know, for example:

mysql -u root -p

where -u root specified the username root and -p will make the command prompt for a password.

If you have installed using Chocolatey on Windows :-

The default username would be root and the password will be blank

abhay tripathi's user avatar

answered Mar 18, 2015 at 1:42

Nish's user avatar

NishNish

1,4801 gold badge9 silver badges8 bronze badges

4

You need to create an user «ODBC» for MySql with no password. Do that in PHPMyAdmin. That will solve your problem.

But remember, if it’s only your local development environment, no problem. It’ll create a serious security hole in your production environment.

User ODBC with no password

Problem Solved

answered May 29, 2015 at 6:47

Imtiaz's user avatar

ImtiazImtiaz

2,4442 gold badges25 silver badges32 bronze badges

2

I tried this and it worked:

C:cd MySQL installed pathMySQL -uyourusername -pyourpassword

James's user avatar

James

4,6335 gold badges36 silver badges48 bronze badges

answered Jun 6, 2015 at 13:58

ravi ranjan's user avatar

C:Usersabhay kumar>mysql --user=admin --password=root..

This command is working for root user..you can access mysql tool from any where using command prompt..

C:Userslelaprasad>mysql --user=root --password=root
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.5.47 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

Tunaki's user avatar

Tunaki

132k46 gold badges331 silver badges418 bronze badges

answered Apr 12, 2016 at 11:39

Madhu Baswani's user avatar

I know it’s been three years since this was asked, but I just figured out this problem for myself. I was using into outfile and getting the error. When I commented out this part of the query, it worked.

The FILE privilege is separate from all the others and must be granted to the user running the script.

GRANT FILE ON *.* TO 'asdfsdf'@'localhost';

Mike Mackintosh's user avatar

answered Jun 23, 2017 at 20:18

DickoVan's user avatar

1

Just create a file my.ini file in installation dir and have the below config as part of this file to solve this permanently.

[mysql]
user=root
password=root

answered Aug 22, 2018 at 14:32

varra's user avatar

varravarra

1648 bronze badges

1

Try this command:
mysql -uroot -p
then it will ask for password
enter root as the password.

answered Mar 28, 2022 at 19:55

Akshay Srivastava's user avatar

If you are using dj-database-url check the schema in your DATABASES

https://github.com/kennethreitz/dj-database-url

MySQL is

'default': dj_database_url.config(default='mysql://USER:PASSWORD@localhost:PORT/NAME') 

It solves the same error even without the PORT

You set the password with:

mysql -u user -p 

answered Aug 31, 2017 at 21:21

Rider 's user avatar

Rider Rider

396 bronze badges

Try using following command it work.

mysql --user=root --password=root_password

answered Apr 12, 2019 at 5:52

Know Group's user avatar

Why you can’t just use mysqlsh?

PS C:UsersarturDesktop> mysqlsh --user root
MySQL Shell 8.0.17

Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type 'help' or '?' for help; 'quit' to exit.
Creating a session to 'root@localhost'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 13 (X protocol)
Server version: 8.0.17 MySQL Community Server - GPL
No default schema selected; type use <schema> to set one.
 MySQL  localhost:33060+ ssl  JS >

mysqlsh on windows terminal (pic)

mate00's user avatar

mate00

2,6875 gold badges25 silver badges34 bronze badges

answered Aug 13, 2019 at 11:50

Artur Paszek's user avatar

1

I have found the answer for this:

enter mysql -u user -p

this will leads to Enter Password .

Then enter the password which you have given…

below is the example:
*****C:Usersadmin>mysql -u root -p

**Enter password: **********************

Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 26
Server version: 8.0.31 MySQL Community Server — GPL

This is worked for me

answered Nov 22, 2022 at 7:00

Ajay HP's user avatar

  1. open command line (run as admin)
  2. go into Mysql server bin folder
  3. run command:
    mysqldump -u root -p mydbscheme > mydbscheme_dump.sql
  4. give your password here against root.

It will work perfect !!

Stephen Rauch's user avatar

Stephen Rauch

47.4k31 gold badges105 silver badges134 bronze badges

answered Aug 2, 2017 at 5:36

Muhammad's user avatar

You can create user with no password in phpmyadmin and it solves the problem!
Lebbar Abdelhadi,

answered May 11, 2020 at 13:33

abdelhadi lebbar's user avatar

It seems like You haven’t set the Mysql server path, Set Environment Variable For MySql Server. Then restart the command prompt and enter mysql -u root-p then it asks for a password enter it.
Thank you.
Happy learning!

Dharman's user avatar

Dharman

30.4k22 gold badges84 silver badges132 bronze badges

answered Sep 13, 2020 at 4:37

pavankumar's user avatar

pavankumarpavankumar

3175 silver badges12 bronze badges

You can connect to SQL from a python Jupiter notebook using this syntax:

import  mysql.connector as conn
conn.connect(host = 'localhost', user = 'root', passwd = 'xxx')

xxx = your password for MySQL
user = your MySQL user name, which might be different from root. Check your MySQL userid, and change it accordingly.

SherylHohman's user avatar

SherylHohman

16.3k17 gold badges86 silver badges93 bronze badges

answered Jan 11, 2022 at 12:51

SantoshKumarPuvvada's user avatar

Let me what worked for me —

Step 1 — In cmd, give a command

set path=%PATH%;set path=%PATH%;C:Program FilesMySQLMySQL Server 8.0bin

[Note — make sure you are replacing ‘C:Program FilesMySQLMySQL
Server’
with your ‘MySQL server path’ above]

Step 2 — type,

mysql -u user -p

👆🏽 This will ask for password and you are good to go but sometimes
it does not work…

Then try this 👇🏽

Alternative of Step 2 —

--user=root --password=1234

👆🏽Must replace your username and password with above

Step 3 — Check out by

mysql --version

I hope this may help…🤞🏽👍🏽

answered Nov 2, 2022 at 9:02

Aditya Gaikwad's user avatar

To overcome the above error, you can simply create the ODBC named user:

CREATE USER ODBC@localhost;

And then grant it all the privileges:

GRANT ALL PRIVILEGES ON *.* TO ODBC@localhost;

This will solve the error. If you want to persist this user, you can, but I would suggest that you delete it once your work has been done:

DROP USER ODBC@localhost;

answered May 27 at 6:01

harshrathod50's user avatar

i entered in Mysql Workbench and i changed the password. It seem the password was expired. it works!

answered Oct 9, 2018 at 8:27

samivic's user avatar

samivicsamivic

1,18813 silver badges13 bronze badges

So, all of you missed to say these:

at first install, connect with mysql.exe -u root -p and at password press enter, and you are logged in, create new user or alter root user with new password. create database, etc !!!

answered Feb 27 at 15:37

user2322332's user avatar

I encountered this problem today. I tried mysql -u root -p, but it doesn’t work.
I restarted the mysql service by two commands:
net stop mysql and net start mysql
then tried the command mysql. It worked.

techspider's user avatar

techspider

3,36013 gold badges37 silver badges61 bronze badges

answered Jun 13, 2016 at 14:27

W.hr's user avatar

Дата: 25.11.2013

Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru

Статистика форума SQLinfo показывает, что одной из наиболее популярных проблем является ошибка mysql №1045 (ошибка доступа).
Текст ошибки содержит имя пользователя, которому отказано в доступе, компьютер, с которого производилось подключение, а также ключевое слово YES или NO, которые показывают использовался ли при этом пароль или была попытка выполнить подключение с пустым паролем.

Типичные примеры:

ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) — сервер MySQL
— сообщает, что была неудачная попытка подключения с локальной машины пользователя с именем root и
— не пустым паролем.

ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) — отказано в
— доступе с локальной машины пользователю с именем root при попытке подключения с пустым паролем.

ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO) — отказано в
— доступе с локальной машины пользователю с именем ODBC при попытке подключения с пустым паролем.

Причина возникновения ошибки 1045

Как ни банально, но единственная причина это неправильная комбинация пользователя и пароля. Обратите внимание, речь идет о комбинации пользователь и пароль, а не имя пользователя и пароль. Это очень важный момент, так как в MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. Синтаксически записывается как ‘имя пользователя’@’имя хоста’.

Таким образом, причина возникновения MySQL error 1045 — неправильная комбинация трех параметров: имени пользователя, хоста и пароля.

В качестве имени хоста могут выступать ip адреса, доменные имена, ключевые слова (например, localhost для обозначения локальной машины) и групповые символы (например, % для обозначения любого компьютера кроме локального). Подробный синтаксис смотрите в документации

Замечание: Важно понимать, что в базе не существует просто пользователя с заданным именем (например, root), а существует или пользователь с именем root, имеющий право подключаться с заданного хоста (например, root@localhost) или даже несколько разных пользователей с именем root (root@127.0.0.1, root@webew.ru, root@’мой домашний ip’ и т.д.) каждый со своим паролем и правами.

Примеры.
1) Если вы не указали в явном виде имя хоста

GRANT ALL ON publications.* TO ‘ODBC’ IDENTIFIED BY ‘newpass’;

то у вас будет создан пользователь ‘ODBC’@’%’ и при попытке подключения с локальной машины вы получите ошибку:

ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: YES)

так как пользователя ‘ODBC’@’localhost’ у вас не существует.

2) Другой первопричиной ошибки mysql 1045 может быть неправильное использование кавычек.

CREATE USER ‘new_user@localhost’ IDENTIFIED BY ‘mypass’; — будет создан пользователь ‘new_user@localhost’@’%’

Правильно имя пользователя и хоста нужно заключать в кавычки отдельно, т.е. ‘имя пользователя’@’имя хоста’

3) Неочевидный вариант. IP адрес 127.0.0.1 в имени хоста соответствует ключевому слову localhost. С одной стороны, root@localhost и ‘root’@’127.0.0.1’ это синонимы, с другой, можно создать двух пользователей с разными паролями. И при подключении будет выбран тот, который распологается в таблице привелегий (mysql.user) раньше.

4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени.
Например, вы создали пользователя »@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.

Что делать?

Во-первых, нужно убедиться, что вы используете правильные имя пользователя и пароль. Для этого нужно подключиться к MySQL с правами администратора (если ошибка 1045 не дает такой возможности, то нужно перезапустить сервер MySQL в режиме —skip-grant-tables), посмотреть содержимое таблицы user служебной базы mysql, в которой хранится информация о пользователях, и при необходимости отредактировать её.

Пример.

SELECT user,host,password FROM mysql.user;
+—————+——————+——————————————-+
| user          | host            | password                                  |
+—————+——————+——————————————-+
| root          | house-f26710394 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| aa            | localhost       | *196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7 |
| test          | localhost       |                                           |
| new_user      | %               |                                           |
|               | %               | *D7D6F58029EDE62070BA204436DE23AC54D8BD8A |
| new@localhost | %               | *ADD102DFD6933E93BCAD95E311360EC45494AA6E |
| root          | localhost       | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+—————+——————+——————————————-+

Если изначально была ошибка:

  • ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

    значит вы указывали при подключении неверный пароль, так как пользователь root@localhost существует. Сам пароль храниться в зашифрованном виде и его нельзя узнать, можно лишь задать новый

    SET PASSWORD FOR root@localhost=PASSWORD(‘новый пароль’);

  • ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: YES)

    в данном случае в таблице привилегий отсутствует пользователь ‘ODBC’@’localhost’. Его нужно создать, используя команды GRANT, CREATE USER и SET PASSWORD.

Экзотический пример. Устанавливаете новый пароль для root@localhost в режиме —skip-grant-tables, однако после перезагрузки сервера по прежнему возникает ошибка при подключении через консольный клиент:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
Оказалось, что было установлено два сервера MySQL, настроенных на один порт.

phpmyadmin

При открытии в браузере phpmyadmin получаете сообщение:

Error
MySQL said:

#1045 — Access denied for user ‘root’@’localhost’ (using password: NO)
Connection for controluser as defined in your configuration failed.
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.

Ни логина, ни пароля вы не вводили, да и пхпадмин их нигде требовал, сразу выдавая сообщение об ошибке. Причина в том, что данные для авторизации берутся из конфигурационного файла config.inc.php Необходимо заменить в нем строчки

$cfg[‘Servers’][$i][‘user’] = ‘root’;      // MySQL user
$cfg[‘Servers’][$i][‘password’] = »;      // MySQL password (only needed

на

$cfg[‘Servers’][$i][‘user’] = ‘ЛОГИН’;      
$cfg[‘Servers’][$i][‘password’] = ‘ПАРОЛЬ’

Установка новой версии

Устанавливаете новую версию MySQL, но в конце при завершении конфигурации выпадает ошибка:

ERROR Nr. 1045
Access denied for user ‘root’@‘localhost’ (using password: NO)

Это происходит потому, что ранее у вас стоял MySQL, который вы удалили без сноса самих баз. Если вы не помните старый пароль и вам нужны эти данные, то выполните установку новой версии без смены пароля, а потом смените пароль вручную через режим —skip-grant-tables.

P.S. Статья написана по материалам форума SQLinfo, т.е. в ней описаны не все потенциально возможные случаи возникновения ошибки mysql №1045, а только те, что обсуждались на форуме. Если ваш случай не рассмотрен в статье, то задавайте вопрос на форуме SQLinfo
Вам ответят, а статья будет расширена.

Дата публикации: 25.11.2013

© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.

Ошибка: Access denied for user ‘root’@’localhost’ (Using password: YES и NO)

При работе с системой MySQL могут возникнуть самые разные ошибки, и на этапе освоения программы разобраться с ними может быть сложно. Одна из наиболее распространенных проблем — ошибка 1045, которая сопровождается сообщением Access denied for user ‘root’@’localhost’ (Using password: YES и NO). Сегодня я расскажу, как ее исправить.

Понять суть проблемы можно, переведя сообщение об ошибке на русский язык. Означает оно, что пользователю с именем root на машине localhost запрещен доступ к БД при использовании пароля или без него.

Окно Connection Error

Причины ошибки Access denied for user ‘root’@’localhost’

Чтобы свободно получить доступ в MySQL, должно совпасть три параметра, описывающих пользователя базы данных — имя, название машины и пароль. Если есть какие-то несовпадения, доступ будет запрещен. Самая простая причина проблемы — неправильный ввод пароля. Кроме этого, вызывать ошибку может неправильный синтаксис.

В системе MySQL нет простой зависимости имя пользователя – пароль, название хоста играет важную роль в получении доступа к БД. Оно может иметь вид IP-адреса, доменного имени, ключевого слова (например, localhost) или символа, объединяющего несколько машин в группу (например, % — любой хост, кроме локального).

Ошибка Access denied

Наиболее распространенные ошибки при обращении к БД:

  1. При присвоении прав новому пользователю не был указан адрес машины, с которой он может подключаться. В таком случае ему автоматически будет разрешено пользоваться БД с любого хоста, кроме локального, и при попытке подключения с localhost возникнет ошибка доступа.
  2. Неправильно расставленные кавычки. Если при создании пользователя написать ‘username@localhost’, это будет значить, что username@localhost может подключаться с любой машины, кроме локальной, а не что username может подключаться с компьютера localhost. Логин пользователя и имя машины должны иметь свою пару кавычек.
  3. Использование пароля при его отсутствии в базе данных.

В зависимости от того, при каком способе подключения к БД возникает ошибка Access denied for user ‘root’@’localhost’ (Using password: YES или NO), используются разные методы решения проблемы.

Если ошибка Access denied for user появляется с указанием Using password: YES, проблема заключается в неправильном вводе пароля. Проверить это можно, открыв таблицу mysql.user, в которой хранятся данные обо всех пользователях.

Таблица USE Mysql

Порядок действий таков:

  1. Откройте таблицу пользователей.
  2. Проверьте, существует ли пользователь root с хостом localhost. Если он есть, смотрите на поле «password». Если там пусто, зайти в базу можно без ввода пароля. Если там что-то есть, значит, вы вводите неправильный пароль.
  3. Смените пароль командой SET PASSWORD.
  4. Если пользователя root нет, создайте его, установите пароль и предоставьте ему права.

После этого в базу данных можно зайти. Если изменить данные не получается, следует использовать параметр —skip-grant-tables, который отменяет все настройки разрешений.

Файл конфигурации

Строки, которые нужно изменить в файле конфигурации

Если ошибка появляется с ключом (Using password: NO), нужно сделать следующее изменить файл config.inc.php, указав в нем правильные данные. Если проблема возникает при установке MySQL, нужно удалить базы данных старой версии программы или сменить пароль для доступа к ним, используя режим —skip-grant-tables.

Таким образом, ошибка Access denied for user ‘root’@’localhost’ (Using password: YES или NO) возникает при несоответствии пароля и имени пользователя и легко исправляется заменой данных для входа.

Опубликовано 06.06.2017 Обновлено 28.04.2021

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

Это мой connect.php

<?php

$user = 'root';
$pass = '';


try{
$dbh = new PDO('mysql:host=localhost;dbname=Login', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row){
print_r($row);
}

$dbh = null;
} catch (PDOException $e){
print "ERROR!:" . $e->getMessage() . "<br/>";
die();

}

Но у меня возникли проблемы, я уверен, что $ user и $ pass верны, но я все еще продолжаю получать это сообщение, я новичок в PDO — может ли это иметь какое-либо отношение к этому?

Когда я загружаю это на свой локальный хост, я получаю сообщение об ошибке:

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя
‘root’ @ ‘localhost’ (используя пароль: НЕТ)

Мне кажется, что это сообщение об ошибке говорит мне, что $pass = 'NO' что это не так или что $ pass не так? Я пытался изменить $pass = 'NO'; и получил следующую ошибку:

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя
‘root’ @ ‘localhost’ (используя пароль: ДА)

Тогда — играя глупо здесь я меняюсь $pass = 'YES';
достал мне эту ошибку:

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя
‘root’ @ ‘localhost’ (используя пароль: ДА)

-3

Решение

Если вы используете wamp, это может быть возможным решением.

-> Изменить localhost в 127.0.0.1,
Так становится

<?php

$user = 'root';
$pass = '';


try{
$dbh = new PDO('mysql:host=127.0.0.1;dbname=Login', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row){
print_r($row);
}

$dbh = null;
} catch (PDOException $e){
print "ERROR!:" . $e->getMessage() . "<br/>";
die();

}

Кроме того, просто поместите весь код подключения в другой файл, например, «dbconnector.php». Включите его на каждой странице, где вам нужно использовать вашу БД. Теперь вы можете получить доступ к соединению через $dbh переменная.

1

Другие решения

Других решений пока нет …

Понравилась статья? Поделить с друзьями:
  • Ошибка odbc sqlstate 42000 номер ошибки 4060
  • Ошибка ogg dll для gta san andreas
  • Ошибка odbc sqlstate 42000 номер ошибки 156
  • Ошибка office ошибка при направлении команды приложению
  • Ошибка odbc sqlstate 42000 номер ошибки 1064