Apakah ada cara untuk mengetahui nama pengguna Anda saat ini di mysql?

90

Saya ingin tahu apakah ada cara untuk kueri mysql untuk mengembalikan nama pengguna pengguna yang mengeluarkan kueri.

Apakah ini mungkin?

pengguna1090729
sumber

Jawaban:

80

Coba CURRENT_USER()fungsinya. Ini mengembalikan nama pengguna yang digunakan MySQL untuk mengautentikasi koneksi klien Anda. Nama pengguna inilah yang menentukan hak istimewa Anda.

Ini mungkin berbeda dari nama pengguna yang dikirim ke MySQL oleh klien (misalnya, MySQL mungkin menggunakan akun anonim untuk mengautentikasi klien Anda, meskipun Anda mengirim nama pengguna). Jika Anda ingin nama pengguna yang dikirim klien ke MySQL saat menghubungkan gunakan USER()fungsi sebagai gantinya.

Nilai menunjukkan nama pengguna yang Anda tentukan saat menyambung ke server, dan host klien tempat Anda tersambung. Nilainya dapat berbeda dari CURRENT_USER ().

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_current-user

scotru
sumber
Terima kasih atas jawaban Anda, jika saya membaca ini dengan benar, keuntungan menggunakan CURRENT_USER () daripada USER () adalah CURRENT_USER () hanya akan mengembalikan pengguna yang diautentikasi?
pengguna1090729
Pada dasarnya, klien dapat menentukan pengguna yang akan digunakan untuk otentikasi - tetapi pengguna tertentu itu mungkin tidak memiliki hak pemberian di atas meja. Namun, akses masih dapat diberikan karena hak anonim di atas meja. Fungsi ini mengembalikan pengguna dalam hak pemberian yang digunakan untuk mengotentikasi pengguna (mungkin anonim) daripada pengguna yang ditentukan oleh klien. Ada contoh bagus di dokumen di sana.
scotru
1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_USER()' at line 1
Pengguna
15
Apakah Anda ingat SELECT dalam kueri Anda, yaitu: SELECT CURRENT_USER (); Posting pertanyaan Anda.
scotru
1
Saya mencoba ini untuk menguji dan CURRENT_USER()tidak benar untuk pertanyaan "Apakah ada cara untuk mengetahui * nama pengguna Anda saat ini * di mysql?". Jawabannya adalah "USER ()", yang "Mengembalikan pengguna MySQL saat ini" ( dev.mysql.com/doc/refman/5.7/en/… ). Anda harus mengupdate jawaban Anda menjadi lebih lengkap, itu terlalu pendek.
James Wilkins
88

Cobalah untuk lari

SELECT USER();

atau

SELECT CURRENT_USER();

Terkadang bisa berbeda, USER () akan mengembalikan login yang Anda coba autentikasi dan CURRENT_USER () akan mengembalikan bagaimana Anda sebenarnya diizinkan untuk mengautentikasi.

Petr Mensik
sumber
18

Gunakan kueri ini:

SELECT USER();

Atau

SELECT CURRENT_USER;
Mihai
sumber
3

untuk mencetak pengguna saat ini yang menggunakan database

select user();

atau

select current_user();
Prashanthhh Kumarr
sumber
3
Saya tidak terlalu menyukai jawaban Anda, tidak hanya tidak menambahkan sesuatu yang baru pada apa yang telah dijawab sebelumnya, tetapi jawaban Anda melewatkan bagian terpenting: perbedaan antara kedua fungsi tersebut.
Jonathan Parent Lévesque
2
Dalam program atau tampilan yang tersimpan, CURRENT_USER () mengembalikan akun untuk pengguna yang mendefinisikan objek (seperti yang diberikan oleh nilai DEFINER) kecuali ditentukan dengan karakteristik SQL SECURITY INVOKER. Dalam kasus terakhir, CURRENT_USER () mengembalikan invoker objek. Pemicu dan peristiwa tidak memiliki opsi untuk menentukan karakteristik SQL SECURITY, jadi untuk objek ini, CURRENT_USER () mengembalikan akun untuk pengguna yang mendefinisikan objek tersebut. Untuk mengembalikan invoker, gunakan USER () atau SESSION_USER (). dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque
tidak ada yang punya waktu untuk membaca semua riwayat fungsi tersebut, dan tidak ada yang menanyakan penjelasan Anda tentang fungsi tersebut, pertanyaan utamanya adalah bagaimana menemukan nama pengguna di mysql, dia tidak menanyakan perbedaan dari kedua pernyataan itu. dan tidak ada yang bisa ditambahkan baru ke jawaban yang ada, karena ini satu-satunya jawaban, dengan menjawabnya akan mendapatkan keyakinan bagi pengguna bahwa ini adalah jawabannya.
Prashanthhh Kumarr
2

Anda juga dapat menggunakan: mysql> pilih pengguna, host dari mysql.user;

+---------------+-------------------------------+
| user          | host                          |
+---------------+-------------------------------+
| fkernel       | %                             |
| nagios        | %                             |
| readonly      | %                             |
| replicant     | %                             |
| reporting     | %                             |
| reporting_ro  | %                             |
| nagios        | xx.xx.xx.xx                 |
| haproxy_root  | xx.xx.xx.xx
| root          | 127.0.0.1                     |
| nagios        | localhost                     |
| root          | localhost                     |
+---------------+-------------------------------+
Ashish Karpe
sumber
1

Anda dapat menemukan nama pengguna saat ini dengan fungsi CURRENT_USER () di MySQL.

untuk Contoh: SELECT CURRENT_USER();

Tapi CURRENT_USER()tidak selalu mengembalikan pengguna yang login. Jadi jika Anda ingin memiliki pengguna yang masuk, gunakan SESSION_USER()saja.

heisenbug47
sumber