ラベル GRANT の投稿を表示しています。 すべての投稿を表示
ラベル GRANT の投稿を表示しています。 すべての投稿を表示

2013年12月7日土曜日

ERROR 1356(HY000)

Original post: http://anothermysqldba.blogspot.com/2013/12/error-1356-hy000.html

エラー時に来たときに理解する最も重要なことは、少し時間をとってリラックスすることです。 
時々 、人々は、エラー全体を実行し、しどろもどろと欲求不満になる。 深呼吸をしてリラックスしてください。 時々 「 狂気はすべてのことのニーズが少し押しです。重力のようなもの 」と「時々質問は複雑で、答えは簡単です 。 " 

これはすべてについては何ですか? さてたとえば、私は最近、別のDBAに迷惑をした問題の解決に役立つように頼まれた。 何もそのDBAにまったく無礼で意味ないが、ラッシュの人々にあることは単なる見落とし 答え 彼らの前にあり、その代わりに分解スパイラル 狂気 。 

ここでは、状況の一般的な概念である。 

データベースのmysqldumpを実行した後、ユーザーは、テストであることに他の人のために別のデータベースに移動しました。 インポートがうまく働いた。 しかし、ユーザーは、作成済みのビューからクエリしようとした際にエラーが表示され始めた。 

MySQLの> <View_name>制限1から*選択します。 

ERROR 1356(HY000):ビュー'。<DB_NAME>た<Viewname>」参照の無効なテーブル(S)または列(S)または機能(S)またはそれらを使用するビューの欠如権の定義/実行者 

最初の反応は、何かが、インポートと間違っていたと仮定することでした。 ビューをしたか、実際に関連するテーブルが破損? 

いいえ。 

MySQLの>ショービュー<View_Name> \ Gを作成します。このエラーを解決するには、まず最初にTODOをすることでした 

おそらく、このような始まりなものが表示されます。 
*************************** 1。 行*************************** 
閲覧:訪問者 
 
ビューの作成 ​​:CREATEアルゴリズムは不定DEFINER = `<Some_user>` @ `<Some_host_or_IP>` SQLセキュリティのDEFINER拡大表示 

あなたが定義者が誰であるかを参照した後`<Some_user>` @ `<Some_host_or_IP>`は、そのユーザーのために助成金を表示することができます。 

MySQLの> `<Some_user>` @ `<Some_host_or_IP>`を表示:助成金; 

「 ビュー不足権の定義/実行者はそれらを使用する 」:これは、解決策は、エラーが最初の場所で言っただけで何だっ判明 

それは簡単にあなたはそれがすでに動作しているデータベースでshow助成を行い、GRANTステートメントをコピーすることができようにするには、またはあなたが必要なデータを収集するためにビューを有効にするには、新しいデータベースに実装するために必要なアクセス許可はどのようなタイプを確認することができます。 

ユーザーおよびエラーの権限を簡単に更新が消えていた。 

「 時々 、答えは簡単です 。 " 


2013年5月19日日曜日

MySQLのユーザー::助成:: mysql_config_editor ::セキュリティ

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-users-grants-mysqlconfigeditor.html

データベースに安全にアクセスできる可能性が高い優先順位番号任意のデータベース管理者のためのものです。 そうでないなら、あなたは真剣にそれがない理由を調査する必要があります。 

マニュアルを経由して一般的なガイドラインは、すでに用意されています。 


MySQLにおけるセキュリティと主要な問題の一つは、もちろん、ユーザーを与えるパーミッションです。 
これらは、いくつかの単純なガイドラインです。 

まず最低限に "スーパーユーザ"または "ルート"アカウントを保つ。 フルアクセスまたはあなたの最大接続数に達したときにまだアクセスできるようになります "ALLはGRANT"を持つユーザー。 だからあなたが望む最後の事は、完全なアクセス権を持つユーザーでコマンドを実行するためのプログラムです。 

あなたが作成しているのかアカウントの種類を覚えておいてください。 次のようなユーザーを制限することができますMAXクエリ、MAXを更新し、最大接続数と時間あたりMAXユーザー接続 。 

ユーザーから接続しているネットワーク環境に留意してください。 ユーザーが同じサブネット内のDHCPネットワークアドレスを使用しようとしている場合は、単一のIPにそれらを制限した場合には、自分だけのために多くの仕事を作ることになる。 あなたはまだワイルドカードかかわらサブネットにそれらを制限することができます。 たとえば'192 .168.0.2 ''192 .168.0対。%' 

ホストとユーザーのための全体のワイルドカードアクセス近づか。 



> CREATE USER ''@'192.168.0.56' ;
Query OK, 0 rows affected (0.02 sec)

> show grants for ''@'192.168.0.56';
+-----------------------------------------+
| Grants for @192.168.0.56 |
+-----------------------------------------+
| GRANT USAGE ON *.* TO ''@'192.168.0.56' |
+-----------------------------------------+


これは、192.168.0.56から誰のためにあなたは、広い開いたままにして行うためのスマートセキュアものではありませんでしょう。 
MySQLは最初のホストおよびユーザ名第二をチェックするので、それはまた、192.168.0.56から他のアカウントに違反する可能性があります。 


> GRANT SELECT ON test.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY 'somepassword';

> show grants for 'exampleuser'@'192.168.0.%';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@192.168.0.% |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT ON `test`.* TO 'exampleuser'@'192.168.0.%' |
+----------------------------------------------------------------------------------------------------------------------+

これができるようになりますだけ'192 .168.0からexampleuserために選択されます。% '。 また、心に留めておく必要がありexampleuserシステムはおそらくユーザが接続するサブネットアドレスのホストを192.168.0%のサブネットアドレスの前に最初のユーザローカルホストで使用されますことをしない限り、ローカルホストから接続している場合。 

これは、ホストごとに異なる​​権限を持つ一人のユーザとパスワードを作成できることを意味します。 


> SHOW GRANTS FOR 'exampleuser'@'localhost';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@localhost |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'localhost' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT, UPDATE, DELETE ON `test`.* TO 'exampleuser'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------+

mysqlクライアントを経由してパスワード= <password>はオプション - 使用しないように全力を尽くす。 あなたは、パスワードの入力を要求するように-Pを使用することができます。 

また、使用するためのMySQL 5.6とオプションがあり、MySQLの設定ユーティリティを 。 


# mysql_config_editor set --login-path=local --host=localhost --user=root --password
Enter password: 




# mysql_config_editor print --all
[local]
user = root
password = *****
host = localhost 


#mysqlの
ERROR 1045(28000):ユーザー 'ルート' @ 'localhost'のためにアクセスが拒否されました(パスワードを使用して:NO)

#のmysql - ログインパス=ローカル
MySQLのモニタへようこそ。

#のmysql - ログインパス=ローカル-e 'を今すぐSELECT()';

あなたにも、ローカルまたはリモートおよび等のような別のパスに名前を付けるためのオプションを持っている。 だからあなたが、setコマンドを使用した後に作成されている/。mylogin.cnfファイルを〜に複数のアクセスユーザアカウントを暗号化することができます。 

あなたはおそらくmysqlクライアントを使用するシェルスクリプトを持っている場合は、使用するように更新するスクリプトでパスワードを持っている" -ログインパスは="移動するため、より安全な方法です。 


もちろん、あなたは、もはやユーザーを必要としないときに... ユーザを削除します。 


> DROP USER 'exampleuser'@'localhost';