LINUX.ORG.RU
ФорумAdmin

mysql. рут без рута.

 


1

1

Дисклеймер - проблема нубская и в гугле есть решение. Но у меня кажется сегодня какой то блок в мозгах стоит, не могу его применить (ни решение, ни мозг).

mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Совершенно точно, что пароль ввожу верный.

Сбрасывал/менял, ситуация не меняется.

Направьте лопату, куда копать.

[mysql]> use mysql; select * from user where User='root';

?

Возможно нужно:

# mysql -uroot -h127.0.0.1 -p

iron ★★★★★ ()
Последнее исправление: iron (всего исправлений: 1)
Ответ на: комментарий от iron

запускаюсь с --skip-grant-tables

SELECT user,host,password FROM user;
+------------------+-----------------------+-------------------------------------------+
| user             | host                  | password                                  |
+------------------+-----------------------+-------------------------------------------+
| root             | localhost             | blabla                                    |

Пытаюсь сделать grant all privileges on *.* to 'root'@'localhost'; Но, в режиме скипа таблиц это не дает сделать

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

rmdevheart ()
Ответ на: комментарий от rmdevheart

skip-name-resolve есть в конфиге? В /etc/hosts localhost имеется? И еще my.cnf хорошо бы глянуть.

iron ★★★★★ ()
Ответ на: комментарий от iron
cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	zabbix

my.cnf

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address            = 127.0.0.1
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
wait_timeout            = 600
myisam-recover         = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
log_error = /var/log/mysql/error.log

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[isamchk]
key_buffer              = 16M

rmdevheart ()
Ответ на: комментарий от anonymous

В том числе и по этой инструкции делал. Что для меня непонятно в корне - не пускает только рута. Еще есть пользователь zabbix, которого пускает под его паролем, например.

rmdevheart ()
Ответ на: комментарий от rmdevheart

тогда может в таблицах привилегий что-то напутано:

забекапить базу mysql

сдампить с новой базы этой же версии (т.е. если 5.5, то любую 5.5)

залить базу и рестартануть без скип гранта

восстановить пользователей и их права

anonymous ()
Ответ на: комментарий от rmdevheart

Метод грязный, но когда ни чего остальное не помогает, то можно воспользоваться: заходим в другой MySQL или тем юзером, которым пускает, делаем select PASSWORD('mypass'); и копируем это значение (без звёздочки), останавливаем MySQL, бэкапим файлы базы mysql, открываем в HEX-редакторе файл с таблицей mysql.user (обычно user.MYD) и у рута побайтно, не изменяя длинны файла вставляем тот хеш, что мы получили в результате того селекта. После этого сохраняемся, стартуем MySQL и пробуем залогиниться. Меня пару раз такой способ выручал.

dronozavr ()
Ответ на: комментарий от dronozavr

смысл если через skip-grant-table он может зайти

anonymous ()
Ответ на: комментарий от rmdevheart

Выход здесь, как мне кажется, только один. Запустить мускуть с skip-grant-table, сдампить все базы кроме mysql, стопануть мускуль, убить всё с /var/lib/mysql и потом выполнить mysql_install_db. Ну и вернуть все базы.

iron ★★★★★ ()
Ответ на: комментарий от iron

Да, спасибо. Уже так и сделал. Так и не понял, где сам себе яйца отрубил правда :(

rmdevheart ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.