MySQL: membuat pengguna yang dapat terhubung dari beberapa host

30

Saya menggunakan MySQL dan saya perlu membuat akun yang dapat terhubung dari localhost atau dari server lain, yaitu 10.1.1.1. Jadi saya sedang melakukan:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Ini berfungsi dengan baik, tetapi apakah ada cara yang lebih elegan untuk membuat akun pengguna yang ditautkan ke beberapa IP atau apakah perlu dilakukan dengan cara ini?

Kekhawatiran utama saya adalah bahwa di masa depan, izin akan diperbarui untuk satu akun 'bob' tetapi tidak yang lain.

DrStalker
sumber

Jawaban:

20

Jika Anda ingin membatasi untuk meng-host dan tidak ingin menentukan berdasarkan subnet atau wildcard yang digunakan %, itulah satu-satunya cara untuk melakukannya. Rincian lebih lanjut tersedia di dokumentasi MySQL .

Saya masih berusaha menemukan cara untuk menghilangkan overhead ketika mengelola otentikasi ke instalasi MySQL besar dan belum menemukan solusi yang sempurna.

Warner
sumber
8

Mari kita mulai dengan membuat pengguna baru bernama "chaminda" di dalam shell MySQL:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

Hal pertama yang harus dilakukan adalah memberikan izin kepada pengguna dan di sini saya telah memberikan semua izin kepada pengguna tertentu.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Muat ulang semua hak istimewa.

FLUSH PRIVILEGES;

Jika Anda ingin mengizinkan rentang IP untuk penggunaan pengguna tertentu sebagai berikut 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Catatan: Di sini host name =% dan itu berarti Anda dapat mengakses server database ini dari host apa pun. Memberikan semua hak istimewa kepada pengguna adalah risiko besar dan itu bukan praktik terbaik. Selanjutnya Anda dapat mengganti pengguna 'chaminda' ke 'bob'.

Chaminda Bandara
sumber
5
Ini tidak menjawab pertanyaan. Ini memberikan akses ke pengguna dari semua IP, tetapi OP bertanya tentang cara yang lebih elegan untuk memungkinkan pengguna tunggal untuk mengakses database dari daftar IP. Pada dasarnya, alih-alih beberapa pernyataan untuk menambahkan pengguna beberapa kali dari beberapa IP, idenya adalah menambahkan satu pengguna yang dapat mengakses database dari beberapa IP, yang membuat manajemen lebih mudah dan lebih sedikit kesalahan.
Anthony
Anda juga dapat menggunakan _ sebagai wildcard seperti 10.1.1.1__ untuk mencocokkan 100 -199 tetapi untuk 200 Anda perlu membuat akun terpisah atau menggunakan% wildcard juga termasuk 0-99 dan 201-255
Chaminda Bandara
-3

MySQL memungkinkan beberapa wildcard dalam satu baris. Solusi yang mungkin adalah mengatur Host Bobmenjadi pengguna

locahost/10.1.1.1

Referensi:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html

GabrielC
sumber
Bukan itu yang dikatakan dokumentasi. Seperti yang tercantum dalam tabel, /255.255.255.0 adalah netmask. Jika ada cara untuk membuat daftar beberapa wildcard dalam definisi host, itu bukan cara untuk melakukannya.
majikman