ホームページ データベース mysql チュートリアル 深入分析MySQLERROR1045(28000)_MySQL

深入分析MySQLERROR1045(28000)_MySQL

Jun 01, 2016 pm 01:06 PM

这几天在MySQL新建用户后,出现访问拒绝的问题,错误码为ERROR 1045(28000)。在网上搜索了很久,找到了很多解决办法,但很遗憾的是这么多办法没有一个能解决该问题。虽然出现的错误码28000很多人都遇到过,但原因也有所不同,有的是mysql.user表中没有信息,有的是root用户没有密码(那就不用密码登录),而使用mysql-5.6.19时,mysql.user有用户信息,root用户没有密码,采用的方法是root用户登录时输入空密码,登录成功。使用root用户创建测试用test,密码为test,语句如下:

grant all onlogdb.* to test identified by ‘test’;
ログイン後にコピー

在命令行输入mysql -u test –p,输入密码test,出现下面的错误信息,详细该错误信息很多人在使用MySQL时都遇到过。

ERROR 1045 (28000):Access denied for user 'test'@'localhost' (using password: YES)
ログイン後にコピー

解决方法是用root用户再创建用户test,密码test,唯一不同的是指定test登录的主机为localhost,如下:

grant all onlogdb.* to test@'localhost' identified by 'test';
ログイン後にコピー

再次使用test用户登录MySQL,成功,如下所示:

/

使用root用户登录MySQL,查看user表中的用户信息如下,可以发现存在两个test用户,host的字段分别为%和localhost,就是前面创建的两个用户。

/

在MySQL中%表示可以在任何主机上登录MySQL数据库,那为什么还需要明确创建登录主机为localhost的用户呢?这涉及到MySQL安装时的初始化用户,匿名用户以及连接验证策略等,下面进行深入的分析。

在安装MySQL时,会默认初始化一些用户,比如root用户,以及host字段为localhost,user字段为空的用户。User字段为空的用户即为匿名用户,该用户的密码也为空,任何人都可以使用匿名用户登录MySQL数据库,但可以做的事情却是有限的,比如在命令行直接输入mysql登录,可以查看匿名用户对哪些数据库有权限:

//

/

通过上面的图片可以发现,匿名用户仅对information_schema和test数据库有权限。而匿名用户又是如何影响其他用户登录,进而出现28000错误的呢?当试图连接MySQL数据库时,数据库根据提供的身份和密码决定是否接受连接请求,身份由两部分组成:用户名和客户端主机(即输入mysql命令的主机)。由于host字段中的%匹配任何主机或者host字段包含通配符,就可能出现多个匹配行,服务器必须决定匹配哪一个,解决方案如下:

服务器将user表中的数据读入内存中,按照host和user字段对行进行排序。

当客户端试图连接时,服务器查找已排序的行并使用第一个匹配客户端主机和用户名的行,user字段为空表示可以匹配任何用户。

找到匹配行后,在验证密码是否一致,如果一致则登录成功。

根据上面描述的规则,通过示例来演示为什么必须要创建test@localhost用户,才能在本地登录成功。对user表进行排序的结果如下图所示:

/

当未创建test@localhost时,该表不包含第一行的记录。用户test登录时,则会匹配到第四行的记录:host为localhost,user为空,因为user为空可以匹配任何用户,再去验证密码不成功登录失败。或者不使用密码登录,还是匹配到第四行,但验证密码成功,然而匿名用户只对information_schema和test数据库有权限,使用其它数据库时也会失败,如下所示:

/

总结一下,当出现28000错误时,首先查看user中是否有数据,是否存在匿名用户。若存在匿名用户则创建userName@localhost,或者也可以删除匿名用户。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

この記事では、DockerのMySQLメモリ使用量を最適化することを調査します。 監視手法(Docker統計、パフォーマンススキーマ、外部ツール)および構成戦略について説明します。 これらには、Dockerメモリの制限、スワッピング、およびcgroupsが含まれます

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

この記事では、MySQLの「共有ライブラリを開くことができない」エラーについて説明します。 この問題は、必要な共有ライブラリ(.so/.dllファイル)を見つけることができないMySQLの障害に起因しています。ソリューションには、システムのパッケージMを介してライブラリのインストールを確認することが含まれます。

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

この記事では、PHPMyAdminの有無にかかわらず、LinuxにMySQLを直接インストールするのとPodmanコンテナを使用します。 それは、各方法のインストール手順を詳述し、孤立、携帯性、再現性におけるポッドマンの利点を強調しますが、

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

この記事では、自己完結型のサーバーレスリレーショナルデータベースであるSQLiteの包括的な概要を説明します。 SQLiteの利点(シンプルさ、移植性、使いやすさ)と短所(同時性の制限、スケーラビリティの課題)を詳しく説明しています。 c

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

このガイドは、HomeBrewを使用してMacOSに複数のMySQLバージョンをインストールおよび管理することを示しています。 Homebrewを使用して設置を分離し、紛争を防ぐことを強調しています。 この記事では、インストール、開始/停止サービス、および最高のPRAを詳述しています

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

See all articles