私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part12
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
>>398
テーブル構成は住所録+沿線情報になりまして、
aテーブルには基本情報(user_id、pref、address)
bテーブルには会員の駅情報(user_id、ensen_id、station_id)
cテーブルには参照する駅情報(ensen、ensen_id、station、station_id)
こういう構成です。()内はフィールド名です。各1万件あります。
SELECT * FROM a LEFT JOIN b ON a.user_id=b.user_id
LEFT JOIN c ON b.station_id=c.station_id
みたいなSQLで結合しているのですが、これが非常に重いです。
インデックスは各idごとに付けています。
MySQLのバージョンは会社では4.0.20なので、合わせています。
だからすぐに捨てることは出来ないので、それが問題です。
テーブル構成は住所録+沿線情報になりまして、
aテーブルには基本情報(user_id、pref、address)
bテーブルには会員の駅情報(user_id、ensen_id、station_id)
cテーブルには参照する駅情報(ensen、ensen_id、station、station_id)
こういう構成です。()内はフィールド名です。各1万件あります。
SELECT * FROM a LEFT JOIN b ON a.user_id=b.user_id
LEFT JOIN c ON b.station_id=c.station_id
みたいなSQLで結合しているのですが、これが非常に重いです。
インデックスは各idごとに付けています。
MySQLのバージョンは会社では4.0.20なので、合わせています。
だからすぐに捨てることは出来ないので、それが問題です。
権限テーブルについて質問です。
したいこと -->
'hoge'と言う、root権限から、grant と mysqlデータベースについてのアクセス権のみ省いたUserを作成したい。
ちなみに、この’hoge’は、LAN内からののみアクセス可能とする(192.168.0.%)
やったこと -->
rootでloginして、
grant all on *.* to 'hoge'@'192.168.0.%' identifed by '******';
とやって、こんなUserができた。
select * from mysql.user where user = 'hoge'
Host: 192.168.0.%
User: hoge
Password: ******
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
したいこと -->
'hoge'と言う、root権限から、grant と mysqlデータベースについてのアクセス権のみ省いたUserを作成したい。
ちなみに、この’hoge’は、LAN内からののみアクセス可能とする(192.168.0.%)
やったこと -->
rootでloginして、
grant all on *.* to 'hoge'@'192.168.0.%' identifed by '******';
とやって、こんなUserができた。
select * from mysql.user where user = 'hoge'
Host: 192.168.0.%
User: hoge
Password: ******
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
で、一旦quitしてから、’hoge’で再loginしてから、
show databases; や select * from mysql.user; するとmysqlデータベースの中身が参照できる(あたりまえ。)
ここまではいいとして、ここから、再度rootでloginしなおして、
revoke all on mysql.* from 'hoge'@'192.168.0.%';
とやってみたら、こんなError
ERROR 1141 (42000): There is no such grant defined for user 'hoge' on host '192.168.0.%'
そりゃあhogeにはgrant option与えてないけど、なんで? Revokeの使い方間違ってる?
そこで、
Insert into mysql.db Values('192.168.0.%','mysql','hoge','N','N'・・・'N');
でmysql.dbテーブルに直接インサートしてみた。
select * from mysql.db where user = 'hoge':
Host: 192.168.0.%
Db: mysql
User: hoge
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
となったので、flush privileges をかけて、rootはlogout。再びhogeでログイン。
そこで、show databases や show tables from mysql をしたら、中が読めてしまう。
MySQL Serverを再起動掛けて見てもやっぱり同じ。
(これでmysql.*が読めないようにすることが目的)
これってやっぱり、最初のgrantの時に、一つ一つDbを明示して権限を与えないとダメですか。
出来れば、既存の権限から、特定のDbだけ除外したい。
実のことを言うと、BackUp用に、他のマシンから各Db、Tableの内容をdumpしたいんだけど、
例えば本番マシン内で、新たにDbが作成されたりした時に、いちいちlocalコンソールからloginして、
増えたDbの分だけgrantしたり、消去されたDbについてRevorkeしたりすんのが煩雑なのと、
DBをフルダンプした時に、mysqlデータベース内の権限テーブルまで吐いてしまうのを回避したい。
show databases; や select * from mysql.user; するとmysqlデータベースの中身が参照できる(あたりまえ。)
ここまではいいとして、ここから、再度rootでloginしなおして、
revoke all on mysql.* from 'hoge'@'192.168.0.%';
とやってみたら、こんなError
ERROR 1141 (42000): There is no such grant defined for user 'hoge' on host '192.168.0.%'
そりゃあhogeにはgrant option与えてないけど、なんで? Revokeの使い方間違ってる?
そこで、
Insert into mysql.db Values('192.168.0.%','mysql','hoge','N','N'・・・'N');
でmysql.dbテーブルに直接インサートしてみた。
select * from mysql.db where user = 'hoge':
Host: 192.168.0.%
Db: mysql
User: hoge
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
となったので、flush privileges をかけて、rootはlogout。再びhogeでログイン。
そこで、show databases や show tables from mysql をしたら、中が読めてしまう。
MySQL Serverを再起動掛けて見てもやっぱり同じ。
(これでmysql.*が読めないようにすることが目的)
これってやっぱり、最初のgrantの時に、一つ一つDbを明示して権限を与えないとダメですか。
出来れば、既存の権限から、特定のDbだけ除外したい。
実のことを言うと、BackUp用に、他のマシンから各Db、Tableの内容をdumpしたいんだけど、
例えば本番マシン内で、新たにDbが作成されたりした時に、いちいちlocalコンソールからloginして、
増えたDbの分だけgrantしたり、消去されたDbについてRevorkeしたりすんのが煩雑なのと、
DBをフルダンプした時に、mysqlデータベース内の権限テーブルまで吐いてしまうのを回避したい。
>>401
バグだって切り分けができてるなら
http://bugs.mysql.com/ へのレポートしてOK。
Enterpriseのソースはbitkeeperにも置いてあるから、
別に入手元は問われないよ。
対応はベストエフォートだけど、これはしょうがない。
契約顧客は専用のサポートサイトがあって、
そちらにレポートするときちんと担当者がアサインされて
障害の切り分けから直すところまでつきあってくれる。
バグだって切り分けができてるなら
http://bugs.mysql.com/ へのレポートしてOK。
Enterpriseのソースはbitkeeperにも置いてあるから、
別に入手元は問われないよ。
対応はベストエフォートだけど、これはしょうがない。
契約顧客は専用のサポートサイトがあって、
そちらにレポートするときちんと担当者がアサインされて
障害の切り分けから直すところまでつきあってくれる。
>>407
なげーよ。
なげーよ。
BitKeeperはこちら。
http://mysql.bkbits.net/
ちなみに、しつこくバグレポートしてると、
そのうちMySQL Quality Contributorとして認定してくれます。
MySQL Quality Contributorになると
MySQL Enterpriseのライセンスがタダでもらえます。
http://mysql.bkbits.net/
ちなみに、しつこくバグレポートしてると、
そのうちMySQL Quality Contributorとして認定してくれます。
MySQL Quality Contributorになると
MySQL Enterpriseのライセンスがタダでもらえます。
>>407
grant usage on mysql.* to 'hoge'@'192.168.0.%' identifed by '******';
grant all on *.* to 'hoge'@'192.168.0.%';
grant usage on mysql.* to 'hoge'@'192.168.0.%' identifed by '******';
grant all on *.* to 'hoge'@'192.168.0.%';
mysqld の起動時、すべての権限がメモリに読み込まれます。
データベース権限、テーブル権限、およびカラム権限はすぐに反映されますが、
ユーザレベルの権限はユーザが次回接続したときに有効となります。
GRANT または REVOKE によって行われた権限テーブルへの変更については、サーバは即座に認識します。
INSERT、UPDATE などを使って手動で権限テーブルを変更した場合、
FLUSH PRIVILEGES ステートメントまたは mysqladmin flush-privileges を実行して
サーバに権限テーブルを再読み込みさせる必要があります。
See 項4.4.3. 「権限の変更はいつ反映されるか」。
データベース権限、テーブル権限、およびカラム権限はすぐに反映されますが、
ユーザレベルの権限はユーザが次回接続したときに有効となります。
GRANT または REVOKE によって行われた権限テーブルへの変更については、サーバは即座に認識します。
INSERT、UPDATE などを使って手動で権限テーブルを変更した場合、
FLUSH PRIVILEGES ステートメントまたは mysqladmin flush-privileges を実行して
サーバに権限テーブルを再読み込みさせる必要があります。
See 項4.4.3. 「権限の変更はいつ反映されるか」。
いろいろとレスサンクス。
>>414
上にも書いてあると思うけど、flush privilegesは何回もしてる。
mysqldの再起動もやった。
>>412,415
Revorkの使い方間違ってるのは理解した。
(ってか今までは、ほとんど delete from mysql.user where user='***' で一旦削除してから、あらたにgrantしてた。)
>>413
上の行のクエリで、mysql.userの*_privが全部'N'のhogeができあがった。
でも、そこから下の行のクエリを書けたら、*_privが全部(grant_priv以外)’Y’になった。
で、flush privileges(念のため)を掛けてから、hogeで再ログインして、
show databases と show tables from mysql でやっぱりmysql.の中身が読めてしまう。
ちなみに、この時(上の行の前、後、下の行の後のいつでも)
select * from mysql.db where user='hoge'; で Enpty set が返ってくる(つまりHitなし)
select * from mysql.db where db='mysql'でも Enpty set。
ちなみに、grant all on my_db1.* to 'piyo'@'192.168.%' identifed by '******'; で作ったUserでloginして
show databases; したら、ちゃんと infomation_schemaとmy_db1しか表示されないし、
show tables from mysql; だと、Access denied for user 'piyo'.... となる(期待した動作)
select * from mysql.db where user='piyo' で、db権限テーブルには’piyo’がちゃんと登録されてる。
う~ん、デフォルトが’Y’で指定したのみ’N’ってのは、できないのかなあ~。
>>414
上にも書いてあると思うけど、flush privilegesは何回もしてる。
mysqldの再起動もやった。
>>412,415
Revorkの使い方間違ってるのは理解した。
(ってか今までは、ほとんど delete from mysql.user where user='***' で一旦削除してから、あらたにgrantしてた。)
>>413
上の行のクエリで、mysql.userの*_privが全部'N'のhogeができあがった。
でも、そこから下の行のクエリを書けたら、*_privが全部(grant_priv以外)’Y’になった。
で、flush privileges(念のため)を掛けてから、hogeで再ログインして、
show databases と show tables from mysql でやっぱりmysql.の中身が読めてしまう。
ちなみに、この時(上の行の前、後、下の行の後のいつでも)
select * from mysql.db where user='hoge'; で Enpty set が返ってくる(つまりHitなし)
select * from mysql.db where db='mysql'でも Enpty set。
ちなみに、grant all on my_db1.* to 'piyo'@'192.168.%' identifed by '******'; で作ったUserでloginして
show databases; したら、ちゃんと infomation_schemaとmy_db1しか表示されないし、
show tables from mysql; だと、Access denied for user 'piyo'.... となる(期待した動作)
select * from mysql.db where user='piyo' で、db権限テーブルには’piyo’がちゃんと登録されてる。
う~ん、デフォルトが’Y’で指定したのみ’N’ってのは、できないのかなあ~。
>>405
とりあえず、EXPLAINは以下の通りです。
長いですけど、絶えずUsing index; Using temporary; Using filesortが出ます。
Array ( [0] => a [table] => a [1] => index [type] => index [2] => [possible_keys] => [3] => PRIMARY [key] => PRIMARY
[4] => 4 [key_len] => 4 [5] => [ref] => [6] => 20292 [rows] => 20292
[7] => Using index; Using temporary; Using filesort [Extra] => Using index; Using temporary; Using filesort )
Array ( [0] => b [table] => b [1] => ALL [type] => ALL [2] => user_id [possible_keys] => user_id
[3] => [key] => [4] => [key_len] => [5] => [ref] => [6] => 4 [rows] => 4 [7] => [Extra] => )
Array ( [0] => c [table] => c [1] => ref [type] => ref [2] => station_id [possible_keys] => station_id
[3] => station_id [key] => station_id [4] => 4 [key_len] => 4 [5] => b.station_id [ref] => b.station_id
[6] => 1 [rows] => 1 [7] => [Extra] => )
とりあえず、EXPLAINは以下の通りです。
長いですけど、絶えずUsing index; Using temporary; Using filesortが出ます。
Array ( [0] => a [table] => a [1] => index [type] => index [2] => [possible_keys] => [3] => PRIMARY [key] => PRIMARY
[4] => 4 [key_len] => 4 [5] => [ref] => [6] => 20292 [rows] => 20292
[7] => Using index; Using temporary; Using filesort [Extra] => Using index; Using temporary; Using filesort )
Array ( [0] => b [table] => b [1] => ALL [type] => ALL [2] => user_id [possible_keys] => user_id
[3] => [key] => [4] => [key_len] => [5] => [ref] => [6] => 4 [rows] => 4 [7] => [Extra] => )
Array ( [0] => c [table] => c [1] => ref [type] => ref [2] => station_id [possible_keys] => station_id
[3] => station_id [key] => station_id [4] => 4 [key_len] => 4 [5] => b.station_id [ref] => b.station_id
[6] => 1 [rows] => 1 [7] => [Extra] => )
オレって実際には全カラムは必要ない時にも select * でクエリしちゃったりする。
一般的にこれってやっぱ無駄というか、パフォーマンスに影響するのかな。
簡単なテストでは大差なかった。
テーブルの型やドライバとかに影響しそうだけど、10個中9個取るときも必要な
カラムを羅列すべきだと思う?
一般的にこれってやっぱ無駄というか、パフォーマンスに影響するのかな。
簡単なテストでは大差なかった。
テーブルの型やドライバとかに影響しそうだけど、10個中9個取るときも必要な
カラムを羅列すべきだと思う?
インデックスが作ってあって、そのインデックスの列だけSELECTする場合、
SELECT * ⇒ インデックスとテーブルにアクセスする
SELECT [必要な列のみ] ⇒ インデックスのみアクセスする
となるので性能にずいぶん影響が出るよ。
あとは通信量が違う
SELECT * ⇒ インデックスとテーブルにアクセスする
SELECT [必要な列のみ] ⇒ インデックスのみアクセスする
となるので性能にずいぶん影響が出るよ。
あとは通信量が違う
select hoge1.fuga, hoge1.hage, hoge2.fuga, hoge2.hage
from hoge as hoge1 left join hoge as hoge2 on hoge2.fuga = hoge1.fuga
みたいなことってよくする?
from hoge as hoge1 left join hoge as hoge2 on hoge2.fuga = hoge1.fuga
みたいなことってよくする?
>>レスくれた方々
色々なヒントをありがとう。
たぶんできた。
grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
これで、mysql.userに*_privが全NのUserができる。この時点で、まだmysql.dbにはなにも追加されてない。
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
これで、mysql.dbにUser:hoge,db:mysql,*_priv:Nのレコードが追加される。
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
これで、mysql.dbにUser:hoge,db:%,*_priv:Yのレコードが追加される。(つまりUser:hogeのレコードが二件存在する)
すかさず、flush privilegesで権限テーブルをflushして、hogeで再ログインすると・・・、
ついに期待通りの動作確認!!。
show databases;でmysql以外のDbが一覧で返ってきて、show tables from mysqlだと、Access denied。
とにかくhogeからはmysql Dbが完全に遮断できた。
この時に、別のターミナルからログインして、新しくDbやTableを作成しても、すかさずhoge側から参照可能。
Manualの4章あたりを何度も読み返して、なんとなくだけど接続、参照時の権限のイメージみたいなが見えてきた。
>>415さんの言ってるように、最初の接続時にmysql.userテーブルを読んで、そこでアクセス権があれば
それをセットする(グローバル設定)。なければそれぞれのDb権限を読みに行って、Dbごと(あるいはTable、columnsごとに)
権限を制御している模様。
で、Db名を明示してgrantしたUserのmysql.userを覗いてみると、なんと全てのprivが’N’になってんで、もしやと思ってやってみた。
実は今までこれ知らなかった。
ManualにはUser名にはワイルドカード使えないとは書いていたけど、その他については特に記述なし。
で、ここの少し上の方のレスで、Db名には’%’が使えそうだと思って、放り込んでみたら、できた。
ワイルドカードより、完全一致のほうが強いようだ。
(バージョンや環境によって変わるかも?でも他のやりかたがあるんだったら教えて。自分にはこれ以上思いあたらん)
ちなみに、grant all on *.* to・・・ だと、mysql.userの中身を全てYに変えてしまう。
grant all on `%.*` だとsyntax error。
grant all on `%`.`*` だと Query Ok にはなるけれど、mysql.dbにはなにも追加されない。(mysql.userも変更なし)
結局 Insert into ・・・・で、たくさん’Y’を打ち込まないといけない。(これがVersionによって数が異なる)
期待通りに動作したもの
確認済み・・・4.0.26-Win32、4.0.27-Win32、5.0.37-Win32、5.0.45-Win32、5.0.45(Cent4)、5.0.50(Cent4)
これから確認・・・5.0.50-Win32、5.0.22-rpm(Cent5)、5.0.27-rpm(FC6)
4.1系、5.1系は持ってないから知らない。(これだけやってどれも期待通りに行ったから、多分大丈夫だとは思うけど・・)
とりあえず寝よう。
色々なヒントをありがとう。
たぶんできた。
grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
これで、mysql.userに*_privが全NのUserができる。この時点で、まだmysql.dbにはなにも追加されてない。
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
これで、mysql.dbにUser:hoge,db:mysql,*_priv:Nのレコードが追加される。
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
これで、mysql.dbにUser:hoge,db:%,*_priv:Yのレコードが追加される。(つまりUser:hogeのレコードが二件存在する)
すかさず、flush privilegesで権限テーブルをflushして、hogeで再ログインすると・・・、
ついに期待通りの動作確認!!。
show databases;でmysql以外のDbが一覧で返ってきて、show tables from mysqlだと、Access denied。
とにかくhogeからはmysql Dbが完全に遮断できた。
この時に、別のターミナルからログインして、新しくDbやTableを作成しても、すかさずhoge側から参照可能。
Manualの4章あたりを何度も読み返して、なんとなくだけど接続、参照時の権限のイメージみたいなが見えてきた。
>>415さんの言ってるように、最初の接続時にmysql.userテーブルを読んで、そこでアクセス権があれば
それをセットする(グローバル設定)。なければそれぞれのDb権限を読みに行って、Dbごと(あるいはTable、columnsごとに)
権限を制御している模様。
で、Db名を明示してgrantしたUserのmysql.userを覗いてみると、なんと全てのprivが’N’になってんで、もしやと思ってやってみた。
実は今までこれ知らなかった。
ManualにはUser名にはワイルドカード使えないとは書いていたけど、その他については特に記述なし。
で、ここの少し上の方のレスで、Db名には’%’が使えそうだと思って、放り込んでみたら、できた。
ワイルドカードより、完全一致のほうが強いようだ。
(バージョンや環境によって変わるかも?でも他のやりかたがあるんだったら教えて。自分にはこれ以上思いあたらん)
ちなみに、grant all on *.* to・・・ だと、mysql.userの中身を全てYに変えてしまう。
grant all on `%.*` だとsyntax error。
grant all on `%`.`*` だと Query Ok にはなるけれど、mysql.dbにはなにも追加されない。(mysql.userも変更なし)
結局 Insert into ・・・・で、たくさん’Y’を打ち込まないといけない。(これがVersionによって数が異なる)
期待通りに動作したもの
確認済み・・・4.0.26-Win32、4.0.27-Win32、5.0.37-Win32、5.0.45-Win32、5.0.45(Cent4)、5.0.50(Cent4)
これから確認・・・5.0.50-Win32、5.0.22-rpm(Cent5)、5.0.27-rpm(FC6)
4.1系、5.1系は持ってないから知らない。(これだけやってどれも期待通りに行ったから、多分大丈夫だとは思うけど・・)
とりあえず寝よう。
grant usage on *.* to 'hoge'@'192,168.0.%' identified by '******';
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
3行目まちがってないか
Insert into mysql.db (`Host`,`Db`,`User`) Values('192.168.0.%','mysql','hoge');
Insert into mysql.db Values('192.168.0.%','mysql','hoge','Y','Y','Y'・・・'Y');
3行目まちがってないか
ちょっと前まで寝てた。
>>428,429,430
!!!。おっしゃるとおり、三行目は
Insert into mysql.db Values('192.168.%','%','hoge','Y','Y','Y',・・・'Y'); のまちがいでした。
>>426のクエリなら、せっかく’N’にした`mysql`での権限を、’Y’にしてしまう。
で、show grants for 'hoge'@'192.168.0.%;'の結果
GRANT USAGE ON *.* TO 'hoge'@'192.168.0.%' IDENTIFIED BY PASSWORD '******'
GRANT ALL PRIVILEGES ON `%`.* TO 'hoge'@'192.168.0.%'
desc mysql.db; (多分ズレまくりだけどかにんして・・・)
Field | Type | Null | Key | Default | Extra
----------------------+---------------+------+-----+---------+------
Host | char(60) | NO | PRI | |
Db | char(64) | NO | PRI | |
User | char(16) | NO | PRI | |
Select_priv | enum('N','Y') | NO | | N |
Insert_priv | enum('N','Y') | NO | | N |
Update_priv | enum('N','Y') | NO | | N |
Delete_priv | enum('N','Y') | NO | | N |
Create_priv | enum('N','Y') | NO | | N |
Drop_priv | enum('N','Y') | NO | | N |
Grant_priv | enum('N','Y') | NO | | N |
References_priv | enum('N','Y') | NO | | N |
Index_priv | enum('N','Y') | NO | | N |
Alter_priv | enum('N','Y') | NO | | N |
Create_tmp_table_priv | enum('N','Y') | NO | | N |
Lock_tables_priv | enum('N','Y') | NO | | N |
Create_view_priv | enum('N','Y') | NO | | N |
Show_view_priv | enum('N','Y') | NO | | N |
Create_routine_priv | enum('N','Y') | NO | | N |
Alter_routine_priv | enum('N','Y') | NO | | N |
Execute_priv | enum('N','Y') | NO | | N |
Version 5.0.50-Win32 今試したけど、このVerも期待通りに動いた。
*_privの数が、4.0系で12個、5.0系で17個。多分4.1系、5.1系だとまた違うハズ・・。
>>428,429,430
!!!。おっしゃるとおり、三行目は
Insert into mysql.db Values('192.168.%','%','hoge','Y','Y','Y',・・・'Y'); のまちがいでした。
>>426のクエリなら、せっかく’N’にした`mysql`での権限を、’Y’にしてしまう。
で、show grants for 'hoge'@'192.168.0.%;'の結果
GRANT USAGE ON *.* TO 'hoge'@'192.168.0.%' IDENTIFIED BY PASSWORD '******'
GRANT ALL PRIVILEGES ON `%`.* TO 'hoge'@'192.168.0.%'
desc mysql.db; (多分ズレまくりだけどかにんして・・・)
Field | Type | Null | Key | Default | Extra
----------------------+---------------+------+-----+---------+------
Host | char(60) | NO | PRI | |
Db | char(64) | NO | PRI | |
User | char(16) | NO | PRI | |
Select_priv | enum('N','Y') | NO | | N |
Insert_priv | enum('N','Y') | NO | | N |
Update_priv | enum('N','Y') | NO | | N |
Delete_priv | enum('N','Y') | NO | | N |
Create_priv | enum('N','Y') | NO | | N |
Drop_priv | enum('N','Y') | NO | | N |
Grant_priv | enum('N','Y') | NO | | N |
References_priv | enum('N','Y') | NO | | N |
Index_priv | enum('N','Y') | NO | | N |
Alter_priv | enum('N','Y') | NO | | N |
Create_tmp_table_priv | enum('N','Y') | NO | | N |
Lock_tables_priv | enum('N','Y') | NO | | N |
Create_view_priv | enum('N','Y') | NO | | N |
Show_view_priv | enum('N','Y') | NO | | N |
Create_routine_priv | enum('N','Y') | NO | | N |
Alter_routine_priv | enum('N','Y') | NO | | N |
Execute_priv | enum('N','Y') | NO | | N |
Version 5.0.50-Win32 今試したけど、このVerも期待通りに動いた。
*_privの数が、4.0系で12個、5.0系で17個。多分4.1系、5.1系だとまた違うハズ・・。
>>434
できない。
できない。
>>447
ありがとうございます
やっぱりそういう風に値の入ってるものだけに絞ってインサートするしかないんでしょうか?
そうだとすると各パラメータの値の有無ごとに振り分けが必要になって面倒な気がしますが…
ありがとうございます
やっぱりそういう風に値の入ってるものだけに絞ってインサートするしかないんでしょうか?
そうだとすると各パラメータの値の有無ごとに振り分けが必要になって面倒な気がしますが…
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- MySQL 総合 Part13 (996) - [94%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part19 (982) - [94%] - 2011/6/9 2:33
- MySQL 総合 Part14 (1001) - [94%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part15 (1001) - [94%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part17 (1001) - [94%] - 2010/6/10 20:47 ○
- MySQL 総合 Part18 (986) - [94%] - 2011/1/17 15:46
- MySQL 総合 Part22 (1001) - [94%] - 2012/7/10 16:45
- MySQL 総合 Part23 (992) - [89%] - 2013/8/11 17:00
- MySQL 総合 Part26 (860) - [89%] - 2023/2/2 9:30
- MySQL 総合 Part21 (1001) - [89%] - 2011/12/25 22:16
- MySQL 総合 Part20 (995) - [89%] - 2011/10/17 4:48
- MySQL 総合 Part24 (1010) - [89%] - 2015/2/14 4:46
- MySQL 総合 Part25 (947) - [89%] - 2017/6/18 6:30
- MySQL vs PostgreSQL Part2 (941) - [36%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について