Saya menggunakan utilitas baris perintah MySQL dan dapat menavigasi melalui database. Sekarang saya perlu melihat daftar akun pengguna. Bagaimana saya bisa melakukan ini?
Saya menggunakan versi MySQL 5.4.1
.
Saya menggunakan utilitas baris perintah MySQL dan dapat menavigasi melalui database. Sekarang saya perlu melihat daftar akun pengguna. Bagaimana saya bisa melakukan ini?
Saya menggunakan versi MySQL 5.4.1
.
Jawaban:
Gunakan kueri ini:
SELECT User FROM mysql.user;
Yang akan menampilkan tabel seperti ini:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Seperti yang ditunjukkan Matthew Scharley dalam komentar pada jawaban ini , Anda dapat mengelompokkan berdasarkan User
kolom jika Anda hanya ingin melihat nama pengguna yang unik.
User
juga, untuk hanya mendapatkan nilai pengguna yang unik, karena ada baris terpisah untuk setiap entri user
@ host
.
DELETE FROM mysql.user;
lebih baik miliki. WHERE user='someuser' and host='somehost';
Jika Anda melakukannya DELETE FROM mysql.user;
, semua pengguna hilang. Login setelah mysql berikutnya restart atau FLUSH PRIVILEGES;
menghilangkan pengguna dari memori. Berikut adalah contoh dari salah satu posting saya tentang melakukan secara DELETE FROM mysql.user
bertanggung jawab: dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
kata kunci:SELECT DISTINCT user FROM mysql.user;
Saya menemukan format ini yang paling berguna karena termasuk bidang host yang penting di MySQL untuk membedakan antara catatan pengguna.
select User,Host from mysql.user;
host
mulai berperan saat bekerja dengan database mysql? [Mysql Noob]
host
ikut bermain saat Anda terhubung dari server yang berbeda. Dimungkinkan untuk memberikan akses yang berbeda ke 'packer'@'example.com'
dan'packer'@'google.com'
Akun pengguna terdiri atas nama pengguna dan akses tingkat host.
Oleh karena itu, ini adalah kueri yang memberikan semua akun pengguna
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
format digunakan untuk mengatur kata sandi. Menghilangkan host dari SET PASSWORD
perintah menghasilkan kesalahan. SET PASSWORD FOR wordpressuser = PASSWORD('...');
menghasilkan kesalahan ERROR 1133 (42000): Can't find any matching row in the user table
. Sertakan host dan berfungsi. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
menghasilkan Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
.
untuk menghindari pengulangan pengguna ketika mereka terhubung dari asal yang berbeda:
select distinct User from mysql.user;
MySQL menyimpan informasi pengguna dalam basis datanya sendiri. Nama databasenya adalah MySQL
. Di dalam basis data itu, informasi pengguna ada dalam sebuah tabel, sebuah dataset, namanya user
. Jika Anda ingin melihat apa yang diatur pengguna di tabel pengguna MySQL, jalankan perintah berikut:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
Jika Anda merujuk pada pengguna MySQL yang sebenarnya, coba:
select User from mysql.user;
SELECT * FROM mysql.user;
Ini meja besar sehingga Anda mungkin ingin lebih selektif dalam bidang apa yang Anda pilih.
localhost
, 127.0.0.1
dan ::1
. Yang mana yang harus saya simpan dan apa yang harus saya hapus? Terima kasih!
Login ke mysql sebagai root dan ketik query berikut
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
sekarang login sebagai user1 dan ketik perintah select User from mysql.user;
Anda akan melihat daftar pengguna ditampilkan. :) +1 Nikmati
Tabel mysql.db mungkin lebih penting dalam menentukan hak pengguna. Saya pikir sebuah entri di dalamnya dibuat jika Anda menyebutkan tabel dalam perintah GRANT. Dalam kasus saya, tabel mysql.users tidak menunjukkan izin untuk pengguna saat jelas dapat terhubung dan memilih, dll.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Saya menggunakan ini untuk mengurutkan pengguna, sehingga host yang diizinkan lebih mudah dikenali:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Peter dan Jesse benar tetapi pastikan Anda memilih DB mysql terlebih dahulu.
use mysql;
select User from mysql.user;
yang seharusnya melakukan trik Anda
use mysql;
berjaga-jaga jika Anda lingkup tabel ke database mysql seperti yang Anda lakukan. Anda bisaselect User from mysql.user;
use mysql;
hanya agar Anda dapat menggunakannya select User from user;
sebagai gantinya select User from mysql.user;
karena biasanya merupakan permintaan satu kali, tidak perlu menggunakan mysql db
use mysql
jika Anda telah menggunakan lebih select user from user;
dari itu bisa menjadi sesuatu, tetapi sebaliknya Anda menggunakan mysql.user
, yang membuat penggunaan use mysql
di awal tidak perlu.
Ini menampilkan daftar pengguna unik:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Menjalankan perintah ini pada linux prompt pertama-tama akan meminta kata sandi dari pengguna root mysql, pada memberikan kata sandi yang benar itu akan mencetak semua pengguna database ke file teks.
Saya menemukan satu lagi berguna karena memberikan informasi tambahan tentang hak istimewa DML dan DDL
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;
gunakan kueri di atas untuk mendapatkan Pengguna Mysql