2013-04-20 12 views
18

Biorąc pod uwagę system MySQL z wieloma zdalnymi użytkownikami (użytkownicy formularza 'joecool'@'192.168.1.2'); czy istnieje instrukcja SQL, której mogę użyć do REQUIRE SSL dla wszystkich użytkowników zdalnych?Jak wymagać SSL dla wszystkich zdalnych użytkowników

Komenda pojedynczy użytkownik:

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

posiadające „wszystko Użytkownik” będzie szczególnie przydatna, ponieważ phpMyAdmin nie obsługuje SSL wymagają flagę podczas tworzenia lub modyfikowania użytkowników.

+1

zauważam mogę znaleźć ludzi bez '' wymagają SSL' poprzez SELECT * FROM mysql.user gdzie host jak I ssl_type = 'ANY' '192,168%.';! '- Czy mogę zmodyfikować' mysql .user' table bezpośrednio? –

+0

Uwaga dla dzisiejszych użytkowników: phpMyAdmin ma sekcję SSL na dole podczas tworzenia lub modyfikowania użytkowników. –

Odpowiedz

9

Przyjęta (poprzednio) odpowiedź Honzy wydaje się niepoprawna, zobacz jej uwagi. Wydaje się niemożliwe użycie zapytania GRANT do zmiany wielu użytkowników naraz od MySQL does not support wildcards for user names.

Jak sugeruje sam możesz zmieniać zapisy w tabeli mysql.user bezpośrednio przy użyciu UPDATE zapytania i jak sugeruje Marc Delisle, potem przemywać priviliges z:

FLUSH PRIVILEGES; 

zobaczyć również dba.stackexchange.com > How to grant multiple users privileges.

2

Tak, możesz bezpośrednio zmodyfikować tabelę mysql.user (zachowaj ostrożność). Następnie wystarczy wydać polecenie PRYWATYWY FLUSH, aby zastosować zmiany do działającego serwera.

+1

Zmodyfikowanym polem jest 'ssl_type' typu \t' enum ('', 'DOWOLNY', 'X509', 'OKREŚLONY') '. Aby przeprowadzić symulację 'REQUIRE SSL', którą wykonałeś,' UPDATE mysql.user SET ssl_type = 'ANY' WHERE user = 'jesteś pewny? ''. Zauważ, że ustawienie tej flagi (na niepustą wartość) nie wydaje się działać podczas łączenia jako 'someuser @ localhost'. (przynajmniej nie blokowało mi logowania się jako 'somuser @ localhost', ale WYMAGA SSL dla połączeń zdalnych) –

+0

@DimitryK Prawdopodobnie nie wpływa na połączenia localhost, ponieważ są one najczęściej (przynajmniej z interfejsem MySQL CLI) wykonywane przy użyciu gniazda UNIX (lub nazwanego potoku w systemie Windows), więc protokół TLS jest niepotrzebny. Mogłabym sobie wyobrazić, że jeśli spróbujesz połączyć się przy użyciu 'mysql -h 127.0.0.1', będzie to wymagać użycia SSL. –

+0

@ChristopherSchultz, SSL ** działa ** na połączenia z gniazdami systemu UNIX, więc jeśli potrzebujesz wysokiej wydajności transportu lokalnego, lepiej mieć pewność, że ssl jest wyłączony na kliencie. Możesz sprawdzić status SSL za pomocą komendy '\ s'. Pamiętaj, że SSL/TLS to tylko warstwa na górze gniazda strumieniowego, dzięki czemu może działać na każdym typie gniazd strumieniowych. Mogą być również przypadki użycia, np. przy użyciu proxy gniazda do zdalnego serwera. –

0

Możesz skonfigurować mysqld z require_secure_transport.

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

Ta możliwość suplementy Wymagania płatne konta SSL, które odbywają pierwszeństwo. Na przykład, jeśli konto jest zdefiniowane z REQUIRE SSL, włączenie require_secure_transport nie pozwala używać konta do łączenia się przy użyciu pliku gniazda Uniksa.

Powiązane problemy