Сброс пароля root для mysql5 в macports - PullRequest
8 голосов
/ 06 июня 2011

Я только что установил macports через macports 1.9.2 на Snow Leopard. Теперь я не могу использовать mysql, потому что кажется, что я не знал пароль.

$ sudo mysql5 -u root -p 
Enter password:  
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Я не уверен, что это какая-то ошибка при установке или использовании, или я просто забыл пароль, но я думаю, что мне нужно сбросить пароль. Как это сделать?

ОБНОВЛЕНИЕ: я могу запускать и останавливать свой сервер MySql, поэтому он не должен быть сломан, но у меня нет такой команды, как $ sudo /opt/local/lib/mysql5/bin/mysqld_safe5.

$ ls /opt/local/lib/mysql5/bin/
innochecksum            mysql_client_test       mysql_secure_installation   mysqlbinlog         mysqlimport         ndb_drop_index          ndb_select_all          resolve_stack_dump
msql2mysql          mysql_client_test_embedded  mysql_setpermission     mysqlbug            mysqlshow           ndb_drop_table          ndb_select_count        resolveip
my_print_defaults       mysql_config            mysql_tzinfo_to_sql     mysqlcheck          mysqlslap           ndb_error_reporter      ndb_show_tables
myisam_ftdump           mysql_convert_table_format  mysql_upgrade           mysqld_multi            mysqltest           ndb_mgm             ndb_size.pl
myisamchk           mysql_find_rows         mysql_waitpid           mysqld_safe         mysqltest_embedded      ndb_print_backup_file       ndb_test_platform
myisamlog           mysql_fix_extensions        mysql_zap           mysqldump           ndb_config          ndb_print_schema_file       ndb_waiter
myisampack          mysql_fix_privilege_tables  mysqlaccess         mysqldumpslow           ndb_delete_all          ndb_print_sys_file      perror
mysql               mysql_install_db        mysqladmin          mysqlhotcopy            ndb_desc            ndb_restore         replace

Ответы [ 3 ]

16 голосов
/ 06 июня 2011

Прежде всего вам необходимо убедиться, что ваша база данных остановлена:

$ sudo /opt/local/share/mysql5/mysql/mysql.server stop 

Теперь вам нужно запустить базу данных в фоновом режиме, с помощью команды mysqld_safe :

$ sudo /opt/local/lib/mysql5/bin/mysqld_safe --skip-grant-tables &

Теперь, когда сервер работает с флагом - skip-grant-tables , вы можете подключиться к нему без пароля и выполнить задание:

 $ sudo mysql5 --user=root mysql
 Enter password:

 mysql> update user set Password=PASSWORD('new-password-here') WHERE User='root';
 Query OK, 2 rows affected (0.04 sec)
 Rows matched: 2  Changed: 2  Warnings: 0

 mysql> flush privileges;
 Query OK, 0 rows affected (0.02 sec)

 mysql> exit
 Bye

Теперь, когда вы сделали это, вам просто нужно остановить сервер, чтобы вы могли вернуться к запуску защищенного сервера MySQL с установленными ограничениями пароля.Прежде всего, выведите сервер, который вы начали, на передний план, набрав « fg », затем убейте его, нажав « Ctrl + c ».

позволяют запустить сервер:

$ sudo /opt/local/share/mysql5/mysql/mysql.server start
6 голосов
/ 07 февраля 2012

У меня была такая же проблема. При попытке сбросить пароль (как предложил develroot) я также получил:

Rows matched: 0 Changed: 0 Warnings: 0

Таким образом, пользователь root никогда не создавался. В дополнение к ответу develroot я предпринял следующие шаги:

flush privileges;
CREATE USER 'root'@'localhost' IDENTIFIED BY 'root'
GRANT ALL ON *.* TO 'root'@'localhost'
2 голосов
/ 20 декабря 2012

Это мое исправление.

После запуска: sudo -u mysql mysql_install_db5

Я получил эту ошибку:

ERROR: 1004  Can't create file '/var/tmp/#sql180bd_1_0.frm' (errno: 9)
121221  2:06:21 [ERROR] Aborting

Как и в предыдущих отчетах, моя таблица пользователей была пустой --- все таблицы mysql были emtpy

В конце концов, я решил сделать это:

  1. Запустите mysqld в безопасном режиме.

    sudo / opt / local / bin / mysqld_safe5 --skip-grant-tables &

  2. Войдите в систему и удалите поврежденную базу данных mysql

    $ mysql5 $ mysql> DROP TABLE mysql;

  3. Перезапустите mysql_install_db5 как ROOT, а не mysql, чтобы он мог, по крайней мере, выполнить работу

    $ sudo -u root mysql_install_db5

  4. Затем вернитесь и выберите -R все в / opt / local / var / db / mysql5 в mysql: mysql, как и должно быть.

    $ sudo chown -R mysql: mysql / opt / local / var / db / mysql5 / $ sudo chown -R mysql: mysql / opt / local / var / run / mysql5 / $ sudo chown -R mysql: mysql / opt / local / var / log / mysql5 /

  5. после этого все работало нормально, спасибо.

...