Система FreeBSD 4.7 , MySQL 3.23.58. Есть root пароль от системы. Нужно или взломать или задать новый пароль для root MySQLДействия ниже описанные пробовал:
- там два варианта, на выбор, например:- грохнуть mysqld
- запустить mysqld_safe --skip-grant-tables --user=root
- затем используя клиент mysql
#> mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;или
stop/kill mysqld:
safe_mysqld --user=root --pid-file=/usr/local/mysql/data/mysqld.pid --skip-grant-tables &
mysql -u root mysql
update user set password=password('newpass') where User='root' and host='localhost';
или
- stop/kill mysqld
- mysqld --skip-grant-tables
- mysqladmin -u root password 'mynewpassword' (создать новый пароль)
- перестартовать mysqld обычным образом
[- можно еще загрузить привелегии:
mysqladmin -h hostname flush-privileges]И вот что получается:
bash-2.05# /usr/local/bin/safe_mysqld --skip-grant-tables &
[1] 19924
bash-2.05# Starting mysqld daemon with databases from /var/db/mysqlbash-2.05# mysql -u root mysql
ERROR 1049: Unknown database 'mysql'
--------------------------------------------------------------------
bash-2.05# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 3.23.58Type 'help;' or '\h' for help. Type '\c' to clear the buffer
mysql> use mysql;
ERROR 1049: Unknown database 'mysql'
mysql> show databases;
Empty set (0.00 sec)
-----------------------------------------------------------------------
bash-2.05# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12 to server version: 3.23.58Type 'help;' or '\h' for help. Type '\c' to clear the buffer
mysql> update user set password=password('newpass') where User='root' and host='localhost';
ERROR 1046: No Database Selected
-----------------------------------------------------------------------
bash-2.05# mysqladmin -u root password 'mynewpassword'
mysqladmin: unable to change password; error: 'You must have privileges to update tables in the mysql database to be able to change passwords for others'
------------------------------------------------------------------------
Может кто сталкивался с подобной сетуевиной.
читать логи и мануал до просветления.
>читать логи и мануал до просветления.Очень помогло))))
1) Остановить демона mysqld
2) переименовать папку с базой mysql (обычно /var/db/mysql/mysql) в другую.
Например так: mv /var/db/mysql/mysql /var/db/mysql/mysql_old
3) запустить скрипт mysql_install_db (обычно /usr/local/bin/mysql_install_db). Он создаст новую системную базу с пользователем root и пустым паролем, заходить только с localhost
4) запустить демон mysqldДалее можно оставить все как есть, задать пароль у рута и разрешенные хосты.
Либо, если что-то нужное в старой базе mysql осталось сделать дальше5) В старой базе поменять поле password таблицы user, например так:
#use mysql_old;
#update user
set password=password('12345')
where user='root';
6) остановить демона mysql.
7) переименовать базу mysql в mysql_new
8) переименовать базу mysql_old в mysql
9) запустить демона mysqld