2013-04-20 18 views
18

Çoklu uzak kullanıcılarla bir MySQL sistemi verildi ('joecool'@'192.168.1.2' formu kullanıcıları); Uzaktaki kullanıcılar için REQUIRE SSL'a kullanabileceğim bir SQL ifadesi var mı?Tüm uzak kullanıcılar için SSL nasıl gerekir

tek kullanıcı komut: oluştururken veya kullanıcılara değiştirirken phpMyAdmin GEREKTİREN SSL bayrağını desteklemediği için özellikle yararlı olacağını bir "tüm kullanıcı" sürümüne sahip

GRANT USAGE ON *.* TO 'joecool'@'192.168.1.2' REQUIRE SSL; 

.

+1

ben yoluyla 'GEREKTİREN SSL' olmadan insanları bulabilirsiniz fark' gibi ev sahibi VE ssl_type mysql.user SELECT * FROM = 'HERHANGİ' '192.168%.';! '- Ben' mysql değiştirebilir .user' tablo doğrudan? –

+0

Bugünün ziyaretçileri için not: phpMyAdmin, kullanıcıları oluştururken veya değiştirirken altta bir SSL bölümüne sahiptir. –

cevap

9

(eskiden) Honza tarafından verilen cevap kabul edilmedi, yorumları gözden geçirin. MySQL does not support wildcards for user names'dan beri birden fazla kullanıcıyı bir seferde değiştirmek için GRANT sorgusunun kullanılması mümkün görünmüyor.

Eğer doğrudan bir UPDATE sorgu kullanarak mysql.user tablodaki kayıtları değiştirebilir kendini önerdi ve Marc Delisle önerildiği gibi, ile sonradan floş ayrıcalıklar gibi:

FLUSH PRIVILEGES; 

Ayrıca dba.stackexchange.com > How to grant multiple users privileges bakın.

2

Evet, mysql.user tablosunu doğrudan değiştirebilirsiniz (dikkatli olun). Ardından, değişiklikleri çalışan sunucuya uygulamak için bir FLUSH PRIVILEGES deyimi yayınlarsınız.

+1

Değiştirilmesi gereken alan 'ssl_type' türünde \t' enum ('', 'ANY', 'X509', 'SPECIFIED') 'dir. Yani 'İSTEK SSL' simulate etmek için, 'UPDATE mysql.user SET ssl_type =' HERHANGİ 'WHERE kullanıcı =' emin misiniz? '. Bu bayrağın (boş olmayan değere) ayarlanmasının 'someuser @ localhost' olarak bağlanırken etkisi olmayacağını unutmayın. (en azından beni "somuser @ localhost' olarak oturum açmamı engellemedi, ancak uzak bağlantılar için SSL zorluyor") –

+0

@DimitryK Muhtemelen en çok (genellikle MySQL CLI ile) olduğu için localhost bağlantılarını etkilemez. UNIX soketi (veya Windows üzerinde adlandırılmış bir boru) ve TLS kullanılarak yapılması gereksizdir. Eğer 'mysql -h 127.0.0.1' kullanarak bağlanmayı denediyseniz, SSL'nin kullanılmasını gerektireceğini düşünürdüm. –

+0

@ChristopherSchultz, SSL ** UNIX soket bağlantılarını etkiliyor, bu nedenle yüksek performanslı yerel aktarımlara ihtiyacınız varsa, ssl'nin istemcinizde devre dışı bırakıldığından emin olmak daha iyi olabilir. SSL durumunu '\ s' komutuyla görebilirsiniz. SSL/TLS'nin sadece bir akış soketinin üzerindeki bir katman olduğunu ve her türlü akış soketinde çalışabildiğini unutmayın. Kullanım durumları da olabilir, örn. uzak bir sunucuya bir soket proxy kullanarak. –

0

'u require_secure_transport ile yapılandırabilirsiniz.

[mysqld] 
... 
ssl-ca = ... 
ssl-cert = ... 
ssl-key = ... 
... 
require-secure-transport = ON 

Bu kabiliyet takviyeleri önceliklidir başına hesaba SSL gereksinimleri. Örneğin, bir hesabın REQUIRE SSL, ile tanımlanması durumunda, require_secure_transport, Unix soket dosyası kullanarak bağlanmak için hesabının kullanılmasını mümkün kılmaz.

İlgili konular