মাইএসকিএলে আপনার বর্তমান ব্যবহারকারীর নামটি জানার উপায় আছে কি?


90

আমি জানতে চাইছি যে কোনও প্রশ্নের জন্য মাইএসকিএল কোয়েরি ব্যবহারকারীর ব্যবহারকারীর নামটি ফেরত পাঠানোর কোনও উপায় রয়েছে যা জিজ্ঞাসাটি জারি করে।

এটা কি সম্ভব?

উত্তর:


80

CURRENT_USER()ফাংশন চেষ্টা করুন । এটি মাইএসকিউএল আপনার ক্লায়েন্ট সংযোগটি প্রমাণীকরণ করতে ব্যবহারকারীর নামটি প্রদান করে। এটি আপনার ব্যবহারকারীর নাম নির্ধারণ করে username

এটি ক্লায়েন্ট দ্বারা মাইএসকিউএল প্রেরণ করা ব্যবহারকারীর নাম থেকে পৃথক হতে পারে (উদাহরণস্বরূপ, মাইএসকিউএল আপনার ক্লায়েন্টকে প্রমাণীকরণ করার জন্য একটি বেনামে অ্যাকাউন্ট ব্যবহার করতে পারে, যদিও আপনি ব্যবহারকারীর নাম পাঠিয়েছেন)। আপনি যদি ব্যবহারকারীর নামটি চান তবে ক্লায়েন্টটি মাইএসকিউএলে প্রেরণ করার সময় তার USER()পরিবর্তে ফাংশনটি ব্যবহার করুন।

মানটি সার্ভারের সাথে সংযোগ করার সময় আপনি নির্দিষ্ট করা ব্যবহারকারীর নাম এবং যে ক্লায়েন্ট হোস্ট থেকে আপনি সংযুক্ত ছিলেন সেটিকে নির্দেশ করে। মানটি CURRENT_USER () এর থেকে আলাদা হতে পারে।

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


আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, আমি যদি এটি সঠিকভাবে পড়ছি, ব্যবহারকারী () এর পরিবর্তে CURRENT_USER () ব্যবহার করার সুবিধাটি কি CURRENT_USER () কেবলমাত্র প্রমাণিত ব্যবহারকারীদের ফিরিয়ে দেবে?
ব্যবহারকারী 1090729

মূলত, ক্লায়েন্ট প্রমাণীকরণের জন্য ব্যবহারকারীর জন্য নির্দিষ্ট করতে পারে - তবে সেই নির্দিষ্ট ব্যবহারকারীর কোনও টেবিলে অনুদানের অধিকার নাও থাকতে পারে। তবুও, টেবিলে বেনামে অধিকারের কারণে অ্যাক্সেস এখনও দেওয়া যেতে পারে। এই ফাংশনটি অনুদানের অধিকারগুলিতে ব্যবহারকারীকে ফিরিয়ে দেয় যা ক্লায়েন্টের দ্বারা নির্দিষ্ট করা ব্যবহারকারীর পরিবর্তে ব্যবহারকারীর (সম্ভবত বেনামে) প্রমাণীকরণের জন্য ব্যবহৃত হয়েছিল। সেখানে ডক্সে একটি ভাল উদাহরণ আছে।
স্কট্রু

4
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
ব্যবহারকারী

15
আপনি কি আপনার ক্যোয়ারিতে SELECT মনে রেখেছেন, যেমন: SELECT CURRENT_USER (); আপনার জিজ্ঞাসা পোস্ট করুন।
স্কট্রু

4
আমি এটি পরীক্ষা করে দেখার চেষ্টা করেছি এবং CURRENT_USER()" আপনার বর্তমান ইউজারনেমটি কি মাইএসএল- তে জানার কোনও উপায় আছে ?" প্রশ্নের জন্য সঠিক ছিল না । উত্তরটি ছিল "ব্যবহারকারী ()", যা "বর্তমান মাইএসকিউএল ব্যবহারকারীকে ফিরিয়ে দেয় " ( dev.mysql.com/doc/refman/5.7/en/… )। আপনার উত্তরটি আরও সম্পূর্ণ হওয়ার জন্য আপডেট করা উচিত, এটি খুব ছোট।
জেমস উইলকিন্স

88

হয় চালানোর চেষ্টা করুন

SELECT USER();

বা

SELECT CURRENT_USER();

এটি কখনও কখনও পৃথক হতে পারে, ব্যবহারকারী () আপনাকে কোন লগইন দিয়ে প্রমাণীকরণের চেষ্টা করেছিল এবং CURRENT_USER () আপনাকে কীভাবে সত্যায়িত করার অনুমতি দেওয়া হয়েছিল তা ফিরে আসবে।


18

এই ক্যোয়ারীটি ব্যবহার করুন:

SELECT USER();

বা

SELECT CURRENT_USER;


3

বর্তমান ব্যবহারকারী যারা ডাটাবেস ব্যবহার করছেন তা মুদ্রণ করতে

select user();

বা

select current_user();

4
আমি আপনার উত্তরটি খুব বেশি পছন্দ করি না, এটি কেবল পূর্বের উত্তরগুলির সাথে নতুন কিছু যোগ করে না, তবে আপনার উত্তরটি সবচেয়ে গুরুত্বপূর্ণ অংশটি মিস করে: এই দুটি কার্যের মধ্যে পার্থক্য।
জোনাথন পিতামাতা লভেস্ক

4
কোনও সঞ্চিত প্রোগ্রাম বা দর্শনের মধ্যে, CURRENT_USER () SQL সুরক্ষা ইনভোকার বৈশিষ্ট্যযুক্ত না হয়ে অবিলম্বে (তার ডিফাইনার মান দ্বারা প্রদত্ত) ব্যবহারকারীকে অ্যাকাউন্টটি ফেরত দেয়। পরবর্তী ক্ষেত্রে, CURRENT_USER () বস্তুর চালককে ফেরত দেয়। ট্রিগার এবং ইভেন্টগুলির কাছে এসকিউএল সুরক্ষা বৈশিষ্ট্যটি সংজ্ঞায়িত করার কোনও বিকল্প নেই, সুতরাং এই বিষয়গুলির জন্য, CURRENT_USER () ব্যবহারকারীটির জন্য অ্যাকাউন্টটি প্রত্যাবর্তন করে যিনি বস্তুর সংজ্ঞা দিয়েছেন। চালককে ফেরত দিতে, ব্যবহারকারী () বা SESSION_USER () ব্যবহার করুন। dev.mysql.com/doc/refman/5.5/en/string-funifications.html
জোনাথন পিতামাতা

কারও কাছে এই ফাংশনগুলির সমস্ত ইতিহাস পড়ার সময় নেই, এবং কেউ এই ফাংশনগুলি সম্পর্কে আপনার ব্যাখ্যা জিজ্ঞাসা করেনি, মূল প্রশ্নটি ছিল কীভাবে মাইএসকিএলে কোনও ব্যবহারকারীর নাম খুঁজে পাওয়া যায়, তিনি এই দুটি বিবৃতিগুলির পার্থক্য সম্পর্কে জানতে চান না। এবং বিদ্যমান উত্তরদাতাকে নতুন যুক্ত করার মতো কিছুই নেই, এর একমাত্র উত্তরটির কারণ দিন, এটির উত্তর দিয়ে ব্যবহারকারীর আস্থা অর্জন হয় যে এটিই উত্তর।
প্রশান্তি কুমার 18

2

আপনি এটি ব্যবহার করতে পারেন: mysql> ব্যবহারকারী নির্বাচন করুন, 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                     |
+---------------+-------------------------------+

1

আপনি মাইএসকিউএলে CURRENT_USER () ফাংশন সহ বর্তমান ব্যবহারকারীর নাম খুঁজে পেতে পারেন।

প্রাক্তন জন্য: SELECT CURRENT_USER();

তবে CURRENT_USER()সর্বদা লগ ইন করা ব্যবহারকারীকে ফিরিয়ে দেবে না। সুতরাং আপনি যদি লগ ইন ব্যবহারকারী থাকতে চান তবে তার SESSION_USER()পরিবর্তে ব্যবহার করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.