mysql create user how create new user mysql
Bu eğitici, farklı yetkilendirme mekanizmaları, parola yönetimi, kaynak sınırı seçenekleri vb. İle MySQL Kullanıcı Oluştur komutunu açıklar:
MySQL CREATE USER komutu, yeni kullanıcılar oluşturmak ve veri tabanlarına / tablolara vb. Ayrıntılı erişim sağlamak için kullanılır.
Birden çok kişi, farklı erişim düzeylerine sahip bir MySQL sunucu örneği kullanır. Örneğin, bazı kullanıcıların belirli bir veritabanına okuma erişimi vardır, benzer şekilde bazıları belirli bir veritabanına okuma-yazma erişimine sahip olabilir, vb.
CREATE USER komutu, MySQL Yöneticileri tarafından MySQL Sunucusu örnekleri için kullanıcılar oluşturmak ve GRANT sorgusunu kullanarak farklı izinler vermek için daha sık kullanılır.
Ne öğreneceksin:
- My SQL CREATE USER Command
- Sonuç
My SQL CREATE USER Command
CREATE USER komutu, MySQL sunucu örneklerine yeni hesaplar oluşturmak veya eklemek için kullanılır.
Bu komut genellikle erişilebilirdir / MySQL yöneticileri tarafından MySQL Sunucusu örneğinin farklı kullanıcılarına erişimi yönetmek için kullanılır.
CREATE USER komutunu kullanarak bir kullanıcı oluştururken,
- MySQL'e bağlanırken kullanılması gereken kimlik doğrulama.
- Kaynak Sınırı
- Parola Yönetimi özellikleri: Parola süresinin dolması, Parola yeniden kullanım ayarları.
- Hesap kilitleme: Yeni oluşturulan hesaplar ya kilitlenir ya da kilidi açılır.
Hesaplar adlı MySQL sistem tablosunda oluşturulur. 'Mysql.user'
Not: CREATE USER komutunu kullanmak için, kullanıcının CREATE_USER ayrıcalığına sahip olması veya MySQL sistem şeması.
En basit haliyle, CREATE USER komutunun sözdizimi aşağıdaki gibidir:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
İsteğe bağlı MEVCUT DEĞİLSE . Bu, kullanıcı zaten mevcutsa, SQL sorgusu sonucunun yalnızca bir uyarı vermesini ve hata vermemesini sağlar. Buraya, 'Kullanıcı adı' kullanıcının bağlanacağı gerçek kullanıcı adını ifade eder ve 'Ana bilgisayar adı' kullanıcının bağlanacağı ana bilgisayarı ifade eder.
Lütfen aklınızda bulundurun, 'ana bilgisayar adı' alanı boş bırakılırsa, ana bilgisayarın değerinin '%' olduğu varsayılır ve bu, herhangi bir ana bilgisayarın belirtilen kullanıcı adıyla bağlanmasına izin verir.
Bu sözdizimiyle bir kullanıcı oluşturun:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Yukarıdaki ifadeyle, 'userx' kullanıcı adı ve şifresi 'şifre' olan bir kullanıcı oluşturduk. Kullanıcıları yerel MySQL örneğimizde oluşturduğumuz için ana bilgisayar adı localhost'tur.
Oluşturduğumuz kullanıcı için girişi görmek için mysql.users tablosunu sorgulamayı deneyelim.
SELECT * from mysql.user
Çıkışı aşağıdaki gibi göreceksiniz:
İlk 4 kullanıcı MySQL kurulumu sırasında önceden oluşturulmuştur, son giriş ise oluşturduğumuz kullanıcıdır - yani 'userx'.
Bu noktada, bir veritabanı oluşturma / güncelleme / sorgulama vb. Açısından kullanıcıya herhangi bir hak vermeden yeni bir kullanıcı oluşturduğumuzu not etmek önemlidir.
MySQL istemcisiyle bu kullanıcıyla giriş yapmayı deneyelim.
Aşağıdaki komutla bağlanmak için terminali kullanabilirsiniz:
$ /usr/local/mysql/bin/mysql -u userx -p
Bir şifre istendiğinde, şifreyi 'şifre' olarak girin.
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 33 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
Şimdi, CREATE DATABASE anahtar sözcüğünü kullanarak yeni bir veritabanı oluşturacağız.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Yukarıda görebileceğiniz gibi, 'userx' kullanıcısının DATABASE oluşturmak için erişimi olmadığını söyleyen bir hata mesajı oluşturulmuş. Şimdi CREATE USER Komutu ile kullanılabilecek diğer seçenekleri görelim.
Kimlik Doğrulama Eklentisiyle KULLANICI OLUŞTUR
'Auth eklentisi' bir kimlik doğrulama seçeneğini belirtir ve mysql.user tablosunun eklenti sütununda saklanır. MySQL, bir dizi kimlik doğrulama eklentisini destekler.
Desteklenen bazı eklentiler aşağıdaki gibidir:
- MySQL yerel şifre hashingi: Yerel parola hashingi, parola değerlerini mysql.users tablosunda saklamak için SHA1 kullanmaktan başka bir şey değildir. Bu mekanizmanın SHA1 şifre karma işleminden daha az güvenli olduğu düşünülmektedir.
- SHA2 256 parola karma oluşturma: Bu, MySQL tarafından kullanılan varsayılan kimlik doğrulama eklentisidir. yani, CREATE_USER komutuyla kimlik doğrulama eklentisi belirtilmemiş olsa bile, varsayılan olarak bu eklenti uygulanacaktır.
- LDAP kullanarak harici kimlik doğrulama: LDAP, genellikle MySQL kimlik doğrulamasını kuruluşun aktif dizinine bağlamak için kullanılır. Örneğin, Google SSO, OAuth veya Microsoft Outlook LDAP kullanarak kimlik doğrulama. Bu, MySQL tarafında da LDAP eklenti kurulumunu gerektirir. Daha fazla ayrıntı için başvurabilirsiniz İşte.
>> Bakın İşte desteklenen eklentilerin tam listesi için.
Varsayılan bir kimlik doğrulama eklentisine ve SHA2 kimlik doğrulama eklentisine ve mysql.users tablosunda bunlara karşılık gelen hashing değerlerine sahip bir kullanıcı oluşturmayı deneyelim. İlk olarak, varsayılan kimlik doğrulamasına sahip (SHA2) bir kullanıcı oluşturacağız ve içinde nelerin depolandığını görelim. mysql.user tablo.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Mysql.users tablosunda bu kullanıcı 'varsayılan kullanıcı' için kimlik doğrulama eklentisine bakalım:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Burada, authentication_string içinde, şifre dizesi için SHA-256 değerini görebilirsiniz - 'P @ ssw0rd'.
Şimdi kimlik doğrulama eklentisine sahip bir kullanıcı oluşturalım. 'MySQL yerel şifresi' ve saklanan eklentinin değerinin ne olduğunu görün.
CREATE USER IF NOT EXISTS 'user-sha1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd'
SELECT host,user,plugin,authentication_string from mysql.user where user='user-sha1'
Rolü Olan KULLANICI OLUŞTUR
MySQL ayrıca yeni kullanıcılara önceden tanımlanmış rollerin atanmasını sağlar. Bu rollerin, veritabanlarının bazılarına veya tümüne zaten yapılandırılmış erişimi vardır (bunlar da özelleştirilebilir), Örneğin, Veritabanına tüm ayrıcalıklar atanabilen 'geliştirici' adlı bir rol oluşturulabilir ve daha sonra aynı rolü yeni kullanıcılara atamak için kullanabiliriz.
Bunu bir örnekle görelim:
- Geliştirici adında bir rol oluşturun
CREATE ROLE 'developer'
- 'Test' adlı bir veritabanı oluşturun
CREATE DATABASE test
- 'Geliştirici' rolü için test veritabanına ayrıcalıklar atayın
GRANT ALL ON test.* TO 'developer'
- Kullanıcı oluşturun ve geliştirici rolü atayın
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Kullanıcının test veritabanında bir tablo oluşturabileceğini doğrulayın
Şimdi 'role sahip kullanıcı' adlı kullanıcıyla oturum açmayı deneyelim ve test veritabanında yeni bir tablo oluşturmaya çalışacağız.
$ /usr/local/mysql/bin/mysql -u user-with-role Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 44 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use test; Database changed mysql> create table test_table(name varchar(20)); Query OK, 0 rows affected (0.07 sec)
SSL / TLS ile KULLANICI OLUŞTURUN
SSL / TLS seçenekleriyle bir kullanıcı oluşturmak, hem istemcinin hem de sunucunun SSL sertifikalarının yüklü olmasını gerektirir. Varsayılan olarak SSL, MySQL için yapılandırılmamıştır.
Bunları takip et adımlar MySQL sunucu örneği için SSL'yi yapılandırmak için.
SSL etkin bir kullanıcı oluşturmak için kullanıcıyı oluştururken SSL GEREKTİR seçeneğini kullanabilirsiniz.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Benzer şekilde, X509 kullanılarak oluşturma, istemcinin / kullanıcının bağlanarak geçerli bir X509 sertifikasına sahip olmasını bekler.
>> Bakın İşte X509 hakkında daha fazla bilgi edinmek için.
X509 sertifikasına sahip bir kullanıcı oluşturmak için aşağıdaki sorguyu kullanın:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
Parola Yönetimi Seçenekleriyle KULLANICI OLUŞTURUN
Parola seçenekleri, KULLANICI OLUŞTUR komutunu kullanarak bir kullanıcı oluştururken Parola üzerinde politika belirlemek için kullanılır.
# 1) Girişte parolayı sona erdirin. Parolanın süresi ilk kullanımdan sonra dolar ve kullanıcılardan parolayı değiştirmelerini ister.
karma tablo c ++ uygulamak
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#iki) Sabit bir aralıktan sonra parolayı sona erdirin. Şifre geçerlilik süresi, yapılandırılmış aralık ile yapılandırılabilir, Örneğin, 90 gün.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Yapılandırılmış yeniden deneme girişimlerinden sonra şifre kilitlenir. Çoğu zaman, 'n' hatalı yeniden deneme denemesinden sonra kullanıcı hesabının kilitlenmesi (yapılandırılmış bir süre için) istenir. Aşağıdaki sorguda, kullanıcı hesabı 5 yanlış denemeden sonra 2 gün boyunca kilitlenecekti.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Yeni parola, yapılandırılmış önceki parolalarla aynı olmamalıdır.
Aşağıdaki sorguda kullanıcılar tarafından belirlenen yeni şifre son 2 şifre ile aynı olmamalıdır.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
Kaynak Sınırı Seçenekleriyle KULLANICI OLUŞTURUN
Veritabanının tek bir kullanıcıdan gelen sorgular / isteklerle boğulmasını önlemek ve MySQL sunucu performansını etkileyebilecek şekilde özellikle üretim MySQL örnekleri için kaynak sınırları gereklidir.
Aşağıdaki seçeneklerden 3'ünü kullanarak Kaynak sınırlarını belirleyebiliriz:
# 1) MAX_QUERIES_PER_HOUR - Belirli bir kullanıcı için saat başına izin verilen alma sorgularının sayısı.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Diyelim ki kullanıcı saatte 5'ten fazla sorguyu aşmaya çalışırsa, MySQL sunucusu aşağıdaki gibi bir hata verir:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Belirli bir kullanıcı için saat başına izin verilen güncelleme sorgularının sayısı.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Bir hesabın saat başına sunucuya bağlanma sayısı.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Verilen kullanıcıdan MySQL sunucu örneğine eşzamanlı bağlantı sayısı.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Bir kullanıcı oluştururken yukarıdaki tüm seçeneklerin de birleştirilebileceğini lütfen unutmayın. Diyelim ki MAX_QUERIES'i 10 ve MAX_UPDATES'i 100 olarak belirtmek istiyorsak, şu şekilde tek bir CREATE_USER sorgumuz olabilir:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL Güncelleme ve Kullanıcıları Silme
MySQL 2 önemli komut sağlar - sırasıyla mevcut kullanıcıları değiştirmek ve silmek için ALTER USER ve DROP USER. Örnekleri kullanarak bunların ikisini de anlayalım.
ALTER KULLANICI
MySQL ALTER USER, mevcut MySQL kullanıcı hesaplarını güncellemek / değiştirmek için kullanılır. Kullanılabilir
- Kaynak sınırlarını güncelleyin
- Parola seçeneklerini ayarlayın
- Hesapları vb. Kilitleyin ve kilidini açın.
Kilitli bir hesabın kilidini açmak için ALTER USER kullanma örneğine bakalım.
Kilitli durumda bir kullanıcı oluşturun ve ardından ALTER USER komutuyla kilidini açın.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Şimdi, bu kullanıcıyla oturum açarken, bir hesap kilitli mesajı alacağız (kullanıcı kilitli bir hesap durumunda oluşturulduğu için).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
ALTER komutu ile kullanıcının kilidini açmak için aşağıdaki sorguyu kullanın.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
MySQL istemcisiyle kullanıcıyla oturum açın:
$ /usr/local/mysql/bin/mysql -u test -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 50 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
DROP KULLANICI
MySQL DROP USER komutu, bir veya daha fazla mevcut kullanıcıyı ve bunlarla ilişkili tüm ayrıcalıkları ve izinleri kaldırır.
Lütfen silinmekte olan kullanıcı tarafından oluşturulan veya güncellenen hiçbir veriyi / tabloları kaldırmayacağını / silmeyeceğini unutmayın.
Birisi mevcut olmayan bir kullanıcıyı silmeye çalışırsa, DROP USER komutu bir hata verir.
Bir kullanıcı oluşturalım ve DROP komutunu kullanarak onu silelim:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Sıkça Sorulan Sorular
S # 1) MySQL'de kullanıcı nedir?
Cevap: MySQL'deki kullanıcı, MySQL sunucu örneğinde oturum açabilen ve farklı işlemler gerçekleştirebilen bir hesap / varlıktır. Bir kullanıcıya bir veya daha fazla veritabanı ve / veya tabloya rol tabanlı erişim veya ayrıntılı erişim atanabilir.
S # 2) MySQL'e bağlı farklı kullanıcılar nasıl kontrol edilir?
Cevap: Bir MySQL sunucu örneğinde aktif kullanıcı oturumlarını görmek için aşağıdaki gibi processlist komutunu çalıştırabilirsiniz.
SHOW processlist;
Bu komutun çıktısı, komutun yürütülmesi sırasında bağlanan etkin kullanıcının oturumlarının farklı özelliklerini görüntüleyecektir.
Aşağıdaki örnek çıktı:
S # 3) MySQL'de kullanıcıları nasıl değiştiririm?
Cevap: MySQL, kullanıcı oturumları kavramı üzerinde çalışır. Belirli bir kullanıcıyla oturum açtığınızda, oturumu sonlandırmayı veya yeni bir pencerede yeni bir kullanıcıya karşı bir oturum açmayı veya bir çalışma tezgahı gibi MySQL GUI istemcilerinde yeni bir bağlantı olarak açmayı planlayabilirsiniz.
Mysql istemcisinden belirli bir kullanıcıyla oturum açmak için aşağıdaki sözdizimini kullanabilirsiniz:
mysql -u {userName} -p
Yukarıdaki komutu yazdıktan sonra, Enter tuşuna bastığınızda, {userName} alanında belirtilen kullanıcının şifresini girmeniz istenecektir. Parola doğrulandıktan sonra, MySQL kabuğuna / komut istemine yönlendirileceksiniz.
Ayrı bir kullanıcı ile giriş yapmak için, çıkış komutunu girerek ve başka bir kullanıcıyla yeniden oturum açarak mevcut oturumu sonlandırabilirsiniz.
mysql> exit
Farklı kullanıcılar için MySQL sunucu örneklerine birden fazla bağlantı olması da mümkündür. Komut istemi için yeni bir sekme / pencere açabilir ve aynı komutu başka bir kullanıcıyla oturum açmak için kullanabilirsiniz.
mysql -u {userName2} -p
S # 4) Bir MySQL kullanıcısı nasıl salt okunur yapılır?
Cevap: MySQL, veritabanlarına veya tablolara ayrıntılı erişim sağlamak için kapsamlı bir mekanizma sağlar. Bir veya daha fazla veri tabanına veya tabloya SELECT, UPDATE, INSERT, vb. Gibi farklı erişim türleri sağlayabilirsiniz.
Bir kullanıcıya salt okunur erişim vermek için, bir veritabanına SELECT erişimi verebilirsiniz (tüm tablolar için * kullanarak veya gereksinime göre tablo adını açıkça belirtebilirsiniz)
Bunu aşağıdaki bir örnek yardımıyla anlayalım:
'Şifre' şifresine sahip 'readaccess' adlı bir kullanıcı oluşturuyoruz
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Şimdi, MySQL'de GRANT anahtar sözcüğünü kullanarak 'test' adlı bir veritabanının tüm tablolarına okuma erişimi verin
grant select on test.* to 'readaccess'@'localhost'
Şimdi, erişimi doğrulamak için, 'readaccess' adlı bu kullanıcıyla oturum açabilir ve 'test' veritabanı içindeki tabloları sorgulamayı deneyebilirsiniz.
Ancak, test veritabanının içindeki tablolardan herhangi birine veri eklemeyi denerseniz, bu kullanıcıya açık bir şekilde az önce okuma erişimi verdiğimiz için erişim reddedildi hatası alırsınız.
S # 5) MySQL'de kullanıcıları nasıl görebilirim?
Cevap: MySQL, MySQL sunucu örneği için oluşturulan tüm kullanıcıların bir listesini içeren 'mysql.user' adlı sistem düzeyinde bir tabloya sahiptir. Bu tablonun ayrıcalıkları genellikle kök veya yönetici kullanıcılar veya MySQL sunucu örneği için kimlik doğrulama ve yetkilendirmeyi yöneten kişilerle sınırlıdır.
S # 6) MySQL kullanıcısının adı ve şifresi nasıl bulunur?
Cevap: MySQL kullanıcı ve şifre eşlemesi, erişim kısıtlı bir tablo olan 'mysql.user' sistem tablosunda saklanır. Parola, kullanıcı oluşturma sırasında seçilen şifreleme moduna bağlı olarak şifrelenmiş biçimde saklanır.
Ancak, birinin hesabı kilitliyse, MySQL, belirli bir kullanıcı hesabının kilidini açmak için kullanılabilen ALTER USER adında başka bir komut sağlar.
Sonuç
Bu öğreticide, genellikle Veritabanı yöneticileri tarafından kimlik doğrulama ve erişim yönetimi için kullanılan MySQL CREATE USER komutunu öğrendik.
MySQL, önceden tanımlanmış erişim izinleriyle yeni kullanıcıların oluşturulmasını sağlayan birçok güçlü kimlik doğrulama mekanizması ve rol tabanlı atamalar sağlar. Ayrıca farklı yetkilendirme mekanizmalarına, farklı şifre ayarlarına, son kullanma seçeneklerine vb. Sahip kullanıcılar oluşturmaya yönelik örnekler gördük
Önerilen Kaynaklar
- Windows ve Mac İçin MySQL Nasıl İndirilir
- MySQL Kod Örnekleriyle Görünüm Öğreticisini Oluştur
- MySQL Örneklerle Tablo Eğitimi Oluşturun
- 31 En İyi Veritabanı Testi Görüşme Soruları ve Cevapları
- Veritabanı Normalleştirme Eğitimi: 1NF 2NF 3NF BCNF Örnekleri
- Veritabanı Testi Tam Kılavuzu (Veriler Neden, Ne ve Nasıl Test Edilir)
- MongoDB Veritabanı Yedeklemesi Oluştur
- MongoDB Kullanıcı Oluşturun ve Örneklerle Rol Atayın