Mysql'de mevcut kullanıcı adınızı bilmenin bir yolu var mı?


90

Bir mysql sorgusunun, sorguyu veren kullanıcının kullanıcı adını döndürmesinin bir yolu olup olmadığını bilmek istiyorum.

Mümkün mü?

Yanıtlar:


80

CURRENT_USER()İşlevi deneyin . Bu, MySQL'in istemci bağlantınızın kimliğini doğrulamak için kullandığı kullanıcı adını döndürür. Ayrıcalıklarınızı belirleyen bu kullanıcı adıdır.

Bu, müşteri tarafından MySQL'e gönderilen kullanıcı adından farklı olabilir (örneğin, MySQL, bir kullanıcı adı göndermiş olsanız bile, müşterinizin kimliğini doğrulamak için anonim bir hesap kullanabilir). İstemcinin bağlanırken MySQL'e gönderdiği kullanıcı adını istiyorsanız USER()bunun yerine işlevi kullanın.

Değer, sunucuya bağlanırken belirttiğiniz kullanıcı adını ve bağlandığınız istemci ana bilgisayarı gösterir. Değer, CURRENT_USER () değerinden farklı olabilir.

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


Cevabınız için teşekkür ederiz, eğer bunu doğru okursam, USER () yerine CURRENT_USER () kullanmanın avantajı, CURRENT_USER () yalnızca kimliği doğrulanmış kullanıcıları döndürecek mi?
user1090729

Temel olarak, istemci kimlik doğrulaması için kullanmak üzere bir kullanıcı belirleyebilir - ancak bu belirli kullanıcının bir tablo üzerinde izin hakları olmayabilir. Yine de masadaki anonim haklar nedeniyle erişim izni verilebilir. Bu işlev, kullanıcıyı, istemci tarafından belirtilen kullanıcı yerine kullanıcının kimliğini doğrulamak için kullanılan (belki anonim) verme haklarıyla döndürür. Oradaki belgelerde güzel bir örnek var.
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
Kullanıcı

15
Sorgunuzdaki SELECT'i hatırladınız mı, yani: SELECT CURRENT_USER (); Sorgunuzu gönderin.
scotru

1
Bunu test etmek için denedim ve CURRENT_USER()"mysql'deki * mevcut kullanıcı adınızı bilmenin * bir yolu var mı ?" Sorusu için doğru değildim . Cevap, "Mevcut MySQL kullanıcısını döndüren " ( dev.mysql.com/doc/refman/5.7/en/… ) "USER ()" idi . Daha eksiksiz olması için cevabınızı güncellemelisiniz, çok kısa.
James Wilkins

88

Ya çalıştırmayı dene

SELECT USER();

veya

SELECT CURRENT_USER();

Bazen farklı olabilir, USER () kimliğini doğrulamaya çalıştığınız oturum açma bilgileriyle geri döner ve CURRENT_USER () gerçekte kimlik doğrulamanıza nasıl izin verildiğini döndürür.


18

Bu sorguyu kullanın:

SELECT USER();

Veya

SELECT CURRENT_USER;


3

veritabanını kullanan mevcut kullanıcıyı yazdırmak için

select user();

veya

select current_user();

3
Cevabınızı pek sevmiyorum, sadece daha önce cevaplananlara yeni bir şey eklemiyor, aynı zamanda cevabınız en önemli kısmı kaçırıyor: bu iki işlev arasındaki fark.
Jonathan Veli Lévesque

2
Saklanan bir program veya görünüm içinde, CURRENT_USER (), SQL GÜVENLİK INVOKER özelliği ile tanımlanmadığı sürece nesneyi tanımlayan kullanıcının hesabını (DEFINER değeri ile verildiği şekilde) döndürür. İkinci durumda, CURRENT_USER () nesnenin çağırıcısını döndürür. Tetikleyiciler ve olayların SQL GÜVENLİK özelliğini tanımlama seçeneği yoktur, bu nedenle bu nesneler için CURRENT_USER (), nesneyi tanımlayan kullanıcının hesabını döndürür. Çağırıcıyı iade etmek için USER () veya SESSION_USER () kullanın. dev.mysql.com/doc/refman/5.5/en/string-functions.html
Jonathan Parent Lévesque

hiç kimsenin bu işlevlerin tüm geçmişini okuyacak zamanı yok ve kimse bu işlevler hakkında açıklamanızı sormadı. Asıl soru mysql'de bir kullanıcı adının nasıl bulunacağıydı, bu iki ifadenin farklılıklarını sormadı. ve mevcut cevaba yeni eklenecek bir şey yoktur, çünkü tek cevap budur, cevaplayarak kullanıcıya cevabın bu olduğuna dair güven kazanır.
Prashanthhh Kumarr

2

Ayrıca şunları da kullanabilirsiniz: mysql> kullanıcı seçin, mysql.user'den ana bilgisayar;

+---------------+-------------------------------+
| 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                     |
+---------------+-------------------------------+

1

Mevcut kullanıcı adını MySQL'de CURRENT_USER () işlevi ile bulabilirsiniz.

Örn: SELECT CURRENT_USER();

Ancak CURRENT_USER()oturum açmış kullanıcıyı her zaman geri döndürmez. Bu nedenle, kullanıcının oturum açmasını istiyorsanız, SESSION_USER()yerine kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.