Access denied for user'root'@'localhost'(using password:YES)ソリューション

1731 ワード

この问题の大部分の人はすべて出会ったことがあることを信じて、少なくとも私は3回出会ったことがあって、その上毎回原因はすべて异なって、前の时间の学友もこの问题に出会って、私にどのように解决するかを闻いて、私は私の解决の考えをすべて1回言って、まだだめだと発见して、最后に意外にも别の原因です..ああ、言いすぎたのは涙で、まとめは以下の通りです.
(注:本明細書では、データベースが正常に使用できるように構築されていますが、プログラムがデータベースに接続できない上、docウィンドウや他のmysqlグラフィックインタフェースで接続できない場合は、mysqlの基礎知識を自己補完してください)
1.公説に基づく(http://dev.mysql.com/doc/refman/5.5/en/access-denied.html)
If you have access problems with a Perl, PHP, Python, or ODBC program,
try to connect to the server withmysql -u user_namedb_nameormysql 
-u user_name-pyour_passdb_name. If you are able to connect using the mysql client, the problem lies with your program, not with the access privileges.
There is no space between-pand the password
大体の意味は、mysqlコマンドラインでmysqlに入ることができれば、mysqlのインストールに問題はなく、あなたのプログラムの問題であり、接続権限がないことを意味します(ここでは後述します).ここで説明したいのは、とても重要で、最後の一言で、スペースがないでください.私はこの損をしましたね.jabc.propertiesでusernameとpasswordを配置したとき、改行のせいでスペースが入っていました.はっきり言って、ユーザー名とパスワードが間違っていました.次のように
jdbc.username=root  
jdbc.password=123456  

rootも123456も後ろにスペースがありますが、これは本当に肉眼では見つけられませんね...だからスペースを消せばいい
2.ユーザーに権限がない(自分を騙す?参考)
実は、この点もネットで他の人がそう言っているのを見て、自分で使ったことがありません.しかし、私が前に最初に言ったように、コマンドラインモードでこのユーザー名とパスワードでmysqlに入ることができれば、権限があるに違いないと思います.どうして権限を与えるのですか.のだから参考までに...
CREATE USER 'root'@'localhost' IDENTIFIED BY '    ';
GRANT ALL PRIVILEGES ON *.* TO root@'localhost';

3.mysqlと駆動jarバージョンの競合
これは私の同級生が現れた問題で、彼の前の問題はすべてなくて、それから私达は発見して、彼がインストールしたmysqlは5.7で、しかし使う駆動jar(mysql-connector)は5.1.3(私が彼に送ったので、私のせいです)で、プログラムの中でずっとmysqlにつながっていないようで、それからなくて、5.7のmysqlをアンインストールして、5.0のmysqlを再インストールしました...(インストールしたのは再起動してからなのか)、これは特例です..
以上参考までに...大神は軽く喷いて、探求を歓迎します