MySQL komut satırı yardımcı programını kullanıyorum ve bir veritabanında gezinebilirsiniz. Şimdi kullanıcı hesaplarının bir listesini görmem gerekiyor. Bunu nasıl yapabilirim?
MySQL sürümünü kullanıyorum 5.4.1
.
MySQL komut satırı yardımcı programını kullanıyorum ve bir veritabanında gezinebilirsiniz. Şimdi kullanıcı hesaplarının bir listesini görmem gerekiyor. Bunu nasıl yapabilirim?
MySQL sürümünü kullanıyorum 5.4.1
.
Yanıtlar:
Bu sorguyu kullan:
SELECT User FROM mysql.user;
Hangi böyle bir tablo çıktı:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Matthew Scharley'in bu yanıttaki yorumlarda belirttiğiUser
gibi, yalnızca benzersiz kullanıcı adlarını görmek istiyorsanız sütuna göre gruplayabilirsiniz .
User
Her user
@ host
girişi için ayrı bir satır olduğundan, sadece benzersiz kullanıcı değerleri elde etmek için de gruplandırmanın gerekli olabileceğini düşünüyorum .
DELETE FROM mysql.user;
Daha iyisi WHERE user='someuser' and host='somehost';
Eğer yaparsanız DELETE FROM mysql.user;
, tüm kullanıcılar gitti. Sonraki mysql yeniden başlatıldıktan sonra oturum açar veya FLUSH PRIVILEGES;
kullanıcıları bellekten kaldırır. İşte yapmanın benim mesajların birinde bir örnektir DELETE FROM mysql.user
sorumlu: dba.stackexchange.com/questions/4614/...
SHOW GRANTS FOR 'user'@'host';
DISTINCT
anahtar kelime kullanabilirsiniz :SELECT DISTINCT user FROM mysql.user;
Bu biçimi, MySQL'de kullanıcı kayıtlarını ayırt etmek için önemli olan ana bilgisayar alanını içerdiğinden en kullanışlı buldum.
select User,Host from mysql.user;
host
MySQL veritabanlarıyla çalışırken bu ne zaman devreye girecek ? [Mysql Noob]
host
farklı bir sunucudan bağlanırken devreye girer. Farklı erişim izni vermek mümkündür 'packer'@'example.com'
ve'packer'@'google.com'
Bir kullanıcı hesabı, kullanıcı adını ve ana bilgisayar düzeyinde erişimi içerir.
Bu nedenle, bu tüm kullanıcı hesaplarını veren sorgudur
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
biçim, şifreleri ayarlamak için kullanılır. Ana bilgisayarın SET PASSWORD
komuttan çıkarılması bir hata oluşturur. SET PASSWORD FOR wordpressuser = PASSWORD('...');
hata üretir ERROR 1133 (42000): Can't find any matching row in the user table
. Ana bilgisayar ekleyin ve çalışır. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
üretir Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
.
kullanıcıların farklı kaynaklardan bağlandıklarında tekrarlarını önlemek için:
select distinct User from mysql.user;
MySQL kullanıcı bilgilerini kendi veritabanında saklar. Veritabanının adı MySQL
. Bu veritabanının içinde, kullanıcı bilgileri adlı bir veri kümesinde bir tablodur user
. MySQL kullanıcı tablosunda hangi kullanıcıların ayarlandığını görmek istiyorsanız, aşağıdaki komutu çalıştırın:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
Gerçek MySQL kullanıcılarına başvuruyorsanız şunu deneyin:
select User from mysql.user;
SELECT * FROM mysql.user;
Bu büyük bir tablo, bu nedenle hangi alanları seçtiğiniz konusunda daha seçici olmak isteyebilirsiniz.
localhost
, 127.0.0.1
ve ::1
. Hangisini saklamalıyım ve neyi silmeliyim? Teşekkürler!
Kök olarak mysql oturumu açın ve aşağıdaki sorguyu yazın
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
olarak oturum açın, sonra command yazın ve user1 olarak oturum açın ve command yazın select User from mysql.user;
Kullanıcı listesinin görüntülendiğini göreceksiniz. :) +1 Keyfini çıkarın
Mysql.db tablosu, kullanıcı haklarının belirlenmesinde muhtemelen daha önemlidir. Ben GRANT komutunda bir tablo bahsederseniz içinde bir giriş oluşturulur düşünüyorum. Benim durumumda, mysql.users tablosu açık bir şekilde bağlanıp seçebildiği zaman bir kullanıcı için hiçbir izin göstermedi.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Kullanıcıları sıralamak için bunu kullanıyorum, böylece izin verilen ana bilgisayarlar daha kolay tespit edilebilir:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Peter ve Jesse doğrudur, ancak önce mysql DB'yi seçtiğinizden emin olun.
use mysql;
select User from mysql.user;
bu senin hile yapmalı
use mysql;
senin gibi MySQL veritabanı durumda kapsam tablo. Sadeceselect User from mysql.user;
use mysql;
sadece genellikle bir kerelik bir sorgu olduğundan bunun select User from user;
yerine select User from mysql.user;
kullanabilirsiniz, mysql db
use mysql
kullandığınız olsaydı select user from user;
bundan daha bir şey olabilirdi, ancak bunun yerine kullandığınız mysql.user
kullanarak yapar, use mysql
başlangıç gereksiz de.
Bu, benzersiz kullanıcıların listesini görüntüler:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Linux komut isteminde bu komutu çalıştırmak önce mysql root kullanıcısının parolasını soracaktır, doğru parolayı sağlayarak tüm veritabanı kullanıcılarını metin dosyasına yazdıracaktır.
DML ve DDL ayrıcalıkları hakkında ek bilgi sağladığı için onu daha kullanışlı buldum
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;
SELECT User FROM mysql.user;
Mysql kullanıcılarını almak için yukarıdaki sorguyu kullanın