2012-11-20 26 views
8

新しいMacBook Pro(OS X 10.8.2)を入手しました。これにmysqlを設定しようとしています。これまでのところ私はそれをインストールすることができましたが、私はrootユーザのアクセス権(またはその問題に関してはどんなユーザも)を得ることができません。私はPythonのためにこれを使用する予定です。私の他のコンピュータでは、私はMYSQL(MAMPなし)しか使用しません。参考のために、私は次のようでしたMYSQL ERRORのアクセスが拒否されました1045

を:依存

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

または

ERROR 1045 (28000): Access denied for user 'jmitch'@'localhost' (using password: NO) :私はmysqlを入力するか、mysql -u root -pとき

$ alias mysql=/usr/local/mysql/bin/mysql $ sudo /Library/StartupItems/MySQLCOM/MySQLCOM start $ alias mysqladmin=/usr/local/mysql/bin/mysqladmin

それは私にこれを提供しますどのph私は使用しています

MYSQLは私のシステム環境設定で動作しています。ご協力ありがとうございました。

+0

http://www.howtoforge.com/reset-forgotten-mysql-root-password – Drew

答えて

21

パッケージを更新すると、アップデータがルートパスワードを上書きした可能性があります。

はそれを復元するには:

停止のmysqldのデーモンを。/binディレクトリをMySQLへ

$ sudo service mysqld stop 

ゴー

$ cd /usr/bin 

スタートは、このオプションを使用してMySQLのデーモン:

$ sudo mysqld_safe --skip-grant-tables 

開き、他の端末とこれを実行するためにmysqlのセッション開く:

$ mysql 

mysql> use mysql; 

see Note1 below for next line. 
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root'; 

mysql> exit; 

今すぐmysqld_safeをプロセスと通常mysqldを再起動します。

$ sudo service mysqld start 

注1:password前のバージョン5.7にテーブルmysql.userの列名です。その後、それはauthentication_stringとなった。それに応じて更新ステートメントを変更します。

+12

'$ sudo service mysql stop'は' sudo:service:command not found'を返します – jmitchel3

+0

sudoでデーモンを実行していますmysqld_safe --skip -grant-tablesモードは本当に必要ではないかもしれませんが、私はそれなしで試してみましたが、それでも問題は解決しました(これはMac 10.9でした) – Basav

+0

OS X Mavericks 10.9上で動作します。 -u root -p '、ありがとう! – raunay

2

マウンテンライオンの端末からMAMPのMySQLにアクセスしようとすると、同様の問題が発生していました。

--no-defaultsフラグが私のために解決しました。マックOSX 10.9マーベリックスに

/Applications/MAMP/Library/bin/mysql --no-defaults -u root -proot -h localhost 
5

私の代わりにmysqld_safeを、サービススクリプトのサポート・ファイルのディレクトリにある「mysql.serverの」スクリプトを使用していました。

$sudo ./mysql.server stop 
$sudo ./mysql.server start --skip-grant-tables 
$ mysql 
mysql> use mysql; 
mysql> UPDATE user SET password=PASSWORD('YOUR_NEW_PASSWORD_HERE') WHERE user = 'root'; 
mysql> exit; 
$sudo ./mysql.server stop 
$sudo ./mysql.server start 
+0

私は 'mysql'という名前のデータベースを持っていません。私は' information_schema'と 'test'という2つのデータベースを持っています。私はこのコマンドを使って接続しました: 'mysql -h127.0.0.1'をmysql経由で接続しました。このエラーが発生しました:' ERROR 2002(HY000):ソケット経由でローカルMySQLサーバに接続できません '/ tmp/mysql。 sock '(2) ' – Saurabh

1

私はMySQL 5.7のために追加したいのですが、単にauthentication_string列を変更するだけで動作しません。これは、MySQLが実際にこれらの値をルート認証に使用することは決してないため、プラグインを使用しているからです。限り、私はこのプラグインは、あなたもホストアカウント上のルートであることを確認することができます(ので、あなたはmysqlの - uのルートをsudoする必要があります)。

私は仕事にこれを取得することができた唯一の方法は、これを実行することでした:

UPDATE mysql.user 
SET authentication_string=PASSWORD(''), plugin='' 
WHERE mysql.user = 'root'; 

また、5.7の公式のMySQLのドキュメントは決してこれを言及していないことに留意すべきです。手紙へのこの文書の後、あなたはどこにも行きません。

+0

私はOS X 10.12.3上で5.7 *を実行しており、mysql stop/startエイリアスを使用できなくなり、質問のエラーが発生します。上記の答えは有望ですが、次のようになります: 'ERROR 1054(42S22): 'where句'の 'my​​sql.user'列が不明ですか? –

関連する問題