mysql: সমস্ত ব্যবহারকারীর জন্য গ্রান্টগুলি দেখান Show


87

মাইএসকিউএলস SHOW GRANTSবর্তমান ব্যবহারকারীর অনুমতিগুলি দেখায়।

রুট হিসাবে লগ ইন এবং সমস্ত ব্যবহারকারীর অনুমতি দেখানোর উপায় আছে?

উত্তর:


45

কিছুই অন্তর্নির্মিত। আপনার কাছে দুটি বিকল্প রয়েছে:

  • common_schemaএর স্ক্যাল_শো_গ্রান্ট ভিউ ব্যবহার করুন । উদাহরণস্বরূপ, আপনি জিজ্ঞাসা করতে পারেন:

    SELECT sql_grants FROM common_schema.sql_show_grants;

    অথবা আপনি নির্দিষ্ট ব্যবহারকারীদের জন্য ক্যোয়ারী করতে পারেন, উদাহরণস্বরূপ:

    SELECT sql_grants FROM common_schema.sql_show_grants WHERE user='app';

    ইনস্টল করতে common_schema, এখানে নির্দেশাবলী অনুসরণ করুন

    দাবি অস্বীকার: আমি এই সরঞ্জামটির লেখক।

  • পারকোনা টুলকিট ব্যবহার করুন pt-show-grants, উদাহরণস্বরূপ:

    pt-show-grants --host localhost --user root --ask-pass

উভয় ক্ষেত্রেই আপনি GRANTকমান্ড বা REVOKE(বিপরীত) কমান্ড চাইতে পারেন।

প্রথম কেসের প্রয়োজন হয় আপনি একটি স্কিমা ইনস্টল করুন, পরবর্তীটির জন্য আপনাকে পিইআরএল স্ক্রিপ্টগুলি + নির্ভরতা ইনস্টল করতে হবে।


11
আপনি কীভাবে সাধারণ_শেমার স্ক্যাল_শো_গ্রান্টস ভিউটি ব্যবহার করবেন তা আরও বিশদে বর্ণনা করতে পারেন? আমি একটি ত্রুটি ERROR 1146 (42S02): Table 'common_schema.sql_show_grants' doesn't exist
পেয়েছি

2
@ মার্টিনভেগটার, আপনি কি কমন_স্কেমা ইনস্টল করেছেন? এখানে ডাউনলোড করুন এবং এই নির্দেশাবলী অনুসরণ করে ইনস্টল করুন ।
Shlomi নোয়াচ

1
@ শ্লোমিনিচ, আপনি যখন বলছেন যে "অন্তর্নির্মিত কিছুই নেই" ... এতে কোনও ত্রুটি আছে information_schema.user_privilegesকি?
পেসারিয়ার

2
দুঃখিত, তবে 'কমন_সেমিমা' বলে কিছু নেই। এর অস্তিত্ব নেই।
ব্রেন্ডন

2
লিঙ্কটি স্কল_শো_গ্রান্টগুলি ভেঙে গেছে
সাইজানফার

81
select * from information_schema.user_privileges;

সম্পাদনা করুন:

শ্লোমি নোয়াচ উল্লেখ করেছেন:

এটি ডাটাবেস-নির্দিষ্ট, টেবিল-নির্দিষ্ট, কলাম-নির্দিষ্ট, রুটিন-সুনির্দিষ্ট সুবিধাগুলি তালিকাভুক্ত করে না। অতএব, অনুদানটি মাইডবিতে অনুদান নির্বাচন করুন * উপরে উপস্থাপিত সাধারণ_সীমা সমাধানটি আপনাকে সম্পূর্ণ চিত্র দেওয়ার জন্য ব্যবহারকারী_প্রেমিজ এবং অন্যান্য টেবিলের ডেটা একত্রিত করে।


5
দুঃখিত, এটি গৃহীত উত্তর হওয়া উচিত নয়। information_schema.user_privilegesকেবলমাত্র ব্যবহারকারী-স্তরের সুবিধাগুলি, যেমন SUPER, RELOADইত্যাদি তালিকাভুক্ত করে It এটি সর্বমোট ডিএমএল অনুদানের মতোও তালিকাবদ্ধ করে SELECT। এটি ডাটাবেস-নির্দিষ্ট, টেবিল-সেপসিফিক, কলাম-নির্দিষ্ট, রুটিন-নির্দিষ্ট সুবিধাগুলি তালিকাভুক্ত করে না । সেখানে সম্মুখ, অনুদান GRANT SELECT ON mydb.* TO myuser@localhostনেই না দেখাবেন information_schema.user_privilegescommon_schemaথেকে দলা তথ্য উপরে উপস্থাপন সমাধান user_privilegesএবং অন্যান্য টেবিল আপনি সম্পূর্ণ ছবি দিতে।
শ্লোমি নোয়াচ

11

এই লিনাক্স শেল খণ্ডটি সমস্ত মাইএসকিউএল ব্যবহারকারীদের উপরে লুপ করে এবং প্রত্যেকের জন্য একটি শোগুলি অনুদান দেয় :

mysql --silent --skip-column-names --execute "select concat('\'',User,'\'@\'',Host,'\'') as User from mysql.user" | sort | \
while read u
 do echo "-- $u"; mysql --silent --skip-column-names --execute "show grants for $u" | sed 's/$/;/'
done

আপনি যদি পাসওয়ার্ড ছাড়াই মাইএসকিউএলে কানেক্ট করতে পারেন তবে সেরা কাজ করে।

আউটপুট ফর্ম্যাট করা হয়েছে যাতে এটি একটি মাইএসকিউএল শেল চালানো যায়। সতর্কতা: আউটপুটটিতে মাইএসকিউএল রুট ব্যবহারকারীর অনুমতি এবং পাসওয়ার্ড রয়েছে! আপনি মাইএসকিউএল রুট ব্যবহারকারী পরিবর্তন করতে না চাইলে এই লাইনগুলি সরান।


6
এটি কী করে বা কীভাবে প্রশ্নের উত্তর দেয় সে সম্পর্কে আপনি কিছু বিশদ যুক্ত করতে চাইতে পারেন। কেবল কিছু গুচ্ছ কোড প্রদর্শন করা আপনার সমাধানটি কেন কাজ করে তা কাউকে বুঝতে সহায়তা করে না।
ম্যাক্স ভার্নন

আমি কোথায় পাসওয়ার্ড দিতে পারি?
মিয়া আসবাত আহমাদ

পাসওয়ার্ড সরবরাহ করতে কেউ একটি বিকল্প ফাইল বা মাইএসকিএল কমান্ডের - পাসওয়ার্ড পতাকা ব্যবহার করতে পারে ।
mleu

সমস্ত ব্যবহারকারীর অনুদান পেতে একটি রুট পাসওয়ার্ড দেওয়া এবং ক্যোয়ারী চালানো সম্ভব হবে না?
মিয়া আসবাত আহমদ

2
আপনি কেবল একটি সংযোগ করার জন্য অনুরোধগুলি স্ট্রিম করতে পারেন এবং 400 টি মূল রুটের মালিকানাধীন শংসাপত্র ফাইলটি ব্যবহার করতে পারেন। আমার সংস্করণ:mysql --defaults-file=/auth/root-mysql.cnf --batch --skip-column-names --execute "SELECT User, Host from mysql.user" | while read user host; do echo "SHOW GRANTS FOR '${user}'@'${host}';"; done | mysql --defaults-file=/auth/root-mysql.cnf --batch | sed 's/^Grants for/-- Grants for/'
বেসজেন

9

select * from mysql.user;

আপনাকে তাদের প্রত্যেককে নির্ধারিত ব্যবহারকারীর তালিকা এবং সুবিধাগুলি দিতে পারে, mysql.userযদিও সারণিতে অ্যাক্সেস প্রয়োজন এবং rootব্যবহারকারীর তা রয়েছে।


4
এটি আপনাকে কেবলমাত্র "শীর্ষ স্তর" (সার্ভার স্তর) সুবিধা দেয়। নির্দিষ্ট স্কিমায় সেট করা সুবিধাগুলি রয়েছে mysql.db। নির্দিষ্ট টেবিলগুলিতে সুবিধাগুলি রয়েছে এবং আরও mysql.tables_priv। সুতরাং এটি এত সহজ নয়।
Shlomi Noach

রেইনবো টেবিল শেননিগানগুলিরselect * from mysql.user জন্য , আপনার পাসওয়ার্ডের হ্যাশগুলি ক্র্যাকস্টেশন.নেটের মধ্যে ফেলে দিন এবং অপরিবর্তিত আউটপুটটি দেখুন।
পেসারিয়ার

8

এক মাছ ধরার নৌকা (পরিবর্তন -urootকরার জন্য -u$USER_NAME(কারণ ব্যাকটিক এর) একটি ইউনিক্স ব্যাশ অন্যান্য ব্যবহারকারীর সাথে ব্যবহারের জন্য):

mysql -uroot -p -sNe"`mysql -uroot -p -se"SELECT CONCAT('SHOW GRANTS FOR \'',user,'\'@\'',host,'\';') FROM mysql.user;"`"

বা ব্যাকটিক্স ছাড়াই এবং পাসওয়ার্ড ইনলাইন (কমান্ডের সামনে স্থান এটি উবুন্টুর বাশ ইতিহাস থেকে বাদ দেয়):

 mysql -uroot -p"$PASSWORD" -sNe"$(mysql -uroot -p"$PASSWORD" -se"SELECT CONCAT('SHOW GRANTS FOR \'',user,'\'@\'',host,'\';') FROM mysql.user;")"

উইন্ডোজে:

mysql -uroot -p -se"SELECT CONCAT('SHOW GRANTS FOR \'',user,'\'@\'',host,'\';') FROM mysql.user;" > grants.sql
mysql -uroot -p < grants.sql
del grants.sql

4

আপনি যদি ত্রুটি ছাড়াই নিম্নলিখিত নির্বাচন নির্বাচন বিবরণী চালাতে পারেন :

/* User-Specific Grants     */   SELECT * FROM mysql.user;
/* Database-Specific Grants */   SELECT * FROM mysql.db;
/* Table-Specific Grants    */   SELECT * FROM mysql.tables_priv;
/* Column-Specific Grants   */   SELECT * FROM mysql.columns_priv;

তারপরে। এসকিউএল সিনট্যাক্সে লিখিত নিম্নলিখিত কোড (নীচে) ব্যবহার করতে নির্দ্বিধায় অনুভব করুন।

সমস্ত বিদ্যমান অনুমতিগুলির জন্য (ডাটাবেস স্থানান্তরের সময় ঘন ঘন রক্ষণাবেক্ষণের জন্য) গ্রান্ট স্টেটমেন্টগুলি পুনঃনির্মাণের প্রয়াসে আমি এই কোয়েরিটি ডিজাইন করেছি। হ্যান্ডল্ড হওয়ার মতো কয়েকটি সমস্যা রয়েছে যেমন ব্যবহারকারী-পাসওয়ার্ড-সংযোগ, তবে আমরা ঘন ঘন পাসওয়ার্ড আপডেট করি কারণ এটি এই প্রকল্পের আওতায় ছিল না।

/* Get All Grants/Permissions for MySQL Instance */

/* [Database.Table.Column]-Specific Grants */
SELECT
    CONCAT("`",gcl.Db,"`") AS 'Database(s) Affected',
    CONCAT("`",gcl.Table_name,"`") AS 'Table(s) Affected',
    gcl.User AS 'User-Account(s) Affected',
    IF(gcl.Host='%','ALL',gcl.Host) AS 'Remote-IP(s) Affected',
    CONCAT("GRANT ",UPPER(gcl.Column_priv)," (",GROUP_CONCAT(gcl.Column_name),") ",
                 "ON `",gcl.Db,"`.`",gcl.Table_name,"` ",
                 "TO '",gcl.User,"'@'",gcl.Host,"';") AS 'GRANT Statement (Reconstructed)'
FROM mysql.columns_priv gcl
GROUP BY CONCAT(gcl.Db,gcl.Table_name,gcl.User,gcl.Host)
/* SELECT * FROM mysql.columns_priv */

UNION

/* [Database.Table]-Specific Grants */
SELECT
    CONCAT("`",gtb.Db,"`") AS 'Database(s) Affected',
    CONCAT("`",gtb.Table_name,"`") AS 'Table(s) Affected',
    gtb.User AS 'User-Account(s) Affected',
    IF(gtb.Host='%','ALL',gtb.Host) AS 'Remote-IP(s) Affected',
    CONCAT(
        "GRANT ",UPPER(gtb.Table_priv)," ",
        "ON `",gtb.Db,"`.`",gtb.Table_name,"` ",
        "TO '",gtb.User,"'@'",gtb.Host,"';"
    ) AS 'GRANT Statement (Reconstructed)'
FROM mysql.tables_priv gtb
WHERE gtb.Table_priv!=''
/* SELECT * FROM mysql.tables_priv */

UNION

/* Database-Specific Grants */
SELECT
    CONCAT("`",gdb.Db,"`") AS 'Database(s) Affected',
    "ALL" AS 'Table(s) Affected',
    gdb.User AS 'User-Account(s) Affected',
    IF(gdb.Host='%','ALL',gdb.Host) AS 'Remote-IP(s) Affected',
    CONCAT(
        'GRANT ',
        CONCAT_WS(',',
            IF(gdb.Select_priv='Y','SELECT',NULL),
            IF(gdb.Insert_priv='Y','INSERT',NULL),
            IF(gdb.Update_priv='Y','UPDATE',NULL),
            IF(gdb.Delete_priv='Y','DELETE',NULL),
            IF(gdb.Create_priv='Y','CREATE',NULL),
            IF(gdb.Drop_priv='Y','DROP',NULL),
            IF(gdb.Grant_priv='Y','GRANT',NULL),
            IF(gdb.References_priv='Y','REFERENCES',NULL),
            IF(gdb.Index_priv='Y','INDEX',NULL),
            IF(gdb.Alter_priv='Y','ALTER',NULL),
            IF(gdb.Create_tmp_table_priv='Y','CREATE TEMPORARY TABLES',NULL),
            IF(gdb.Lock_tables_priv='Y','LOCK TABLES',NULL),
            IF(gdb.Create_view_priv='Y','CREATE VIEW',NULL),
            IF(gdb.Show_view_priv='Y','SHOW VIEW',NULL),
            IF(gdb.Create_routine_priv='Y','CREATE ROUTINE',NULL),
            IF(gdb.Alter_routine_priv='Y','ALTER ROUTINE',NULL),
            IF(gdb.Execute_priv='Y','EXECUTE',NULL),
            IF(gdb.Event_priv='Y','EVENT',NULL),
            IF(gdb.Trigger_priv='Y','TRIGGER',NULL)
        ),
        " ON `",gdb.Db,"`.* TO '",gdb.User,"'@'",gdb.Host,"';"
    ) AS 'GRANT Statement (Reconstructed)'
FROM mysql.db gdb
WHERE gdb.Db != ''
/* SELECT * FROM mysql.db */

UNION

/* User-Specific Grants */
SELECT
    "ALL" AS 'Database(s) Affected',
    "ALL" AS 'Table(s) Affected',
    gus.User AS 'User-Account(s) Affected',
    IF(gus.Host='%','ALL',gus.Host) AS 'Remote-IP(s) Affected',
    CONCAT(
        "GRANT ",
        IF((gus.Select_priv='N')&(gus.Insert_priv='N')&(gus.Update_priv='N')&(gus.Delete_priv='N')&(gus.Create_priv='N')&(gus.Drop_priv='N')&(gus.Reload_priv='N')&(gus.Shutdown_priv='N')&(gus.Process_priv='N')&(gus.File_priv='N')&(gus.References_priv='N')&(gus.Index_priv='N')&(gus.Alter_priv='N')&(gus.Show_db_priv='N')&(gus.Super_priv='N')&(gus.Create_tmp_table_priv='N')&(gus.Lock_tables_priv='N')&(gus.Execute_priv='N')&(gus.Repl_slave_priv='N')&(gus.Repl_client_priv='N')&(gus.Create_view_priv='N')&(gus.Show_view_priv='N')&(gus.Create_routine_priv='N')&(gus.Alter_routine_priv='N')&(gus.Create_user_priv='N')&(gus.Event_priv='N')&(gus.Trigger_priv='N')&(gus.Create_tablespace_priv='N')&(gus.Grant_priv='N'),
            "USAGE",
            IF((gus.Select_priv='Y')&(gus.Insert_priv='Y')&(gus.Update_priv='Y')&(gus.Delete_priv='Y')&(gus.Create_priv='Y')&(gus.Drop_priv='Y')&(gus.Reload_priv='Y')&(gus.Shutdown_priv='Y')&(gus.Process_priv='Y')&(gus.File_priv='Y')&(gus.References_priv='Y')&(gus.Index_priv='Y')&(gus.Alter_priv='Y')&(gus.Show_db_priv='Y')&(gus.Super_priv='Y')&(gus.Create_tmp_table_priv='Y')&(gus.Lock_tables_priv='Y')&(gus.Execute_priv='Y')&(gus.Repl_slave_priv='Y')&(gus.Repl_client_priv='Y')&(gus.Create_view_priv='Y')&(gus.Show_view_priv='Y')&(gus.Create_routine_priv='Y')&(gus.Alter_routine_priv='Y')&(gus.Create_user_priv='Y')&(gus.Event_priv='Y')&(gus.Trigger_priv='Y')&(gus.Create_tablespace_priv='Y')&(gus.Grant_priv='Y'),
                "ALL PRIVILEGES",
                CONCAT_WS(',',
                    IF(gus.Select_priv='Y','SELECT',NULL),
                    IF(gus.Insert_priv='Y','INSERT',NULL),
                    IF(gus.Update_priv='Y','UPDATE',NULL),
                    IF(gus.Delete_priv='Y','DELETE',NULL),
                    IF(gus.Create_priv='Y','CREATE',NULL),
                    IF(gus.Drop_priv='Y','DROP',NULL),
                    IF(gus.Reload_priv='Y','RELOAD',NULL),
                    IF(gus.Shutdown_priv='Y','SHUTDOWN',NULL),
                    IF(gus.Process_priv='Y','PROCESS',NULL),
                    IF(gus.File_priv='Y','FILE',NULL),
                    IF(gus.References_priv='Y','REFERENCES',NULL),
                    IF(gus.Index_priv='Y','INDEX',NULL),
                    IF(gus.Alter_priv='Y','ALTER',NULL),
                    IF(gus.Show_db_priv='Y','SHOW DATABASES',NULL),
                    IF(gus.Super_priv='Y','SUPER',NULL),
                    IF(gus.Create_tmp_table_priv='Y','CREATE TEMPORARY TABLES',NULL),
                    IF(gus.Lock_tables_priv='Y','LOCK TABLES',NULL),
                    IF(gus.Execute_priv='Y','EXECUTE',NULL),
                    IF(gus.Repl_slave_priv='Y','REPLICATION SLAVE',NULL),
                    IF(gus.Repl_client_priv='Y','REPLICATION CLIENT',NULL),
                    IF(gus.Create_view_priv='Y','CREATE VIEW',NULL),
                    IF(gus.Show_view_priv='Y','SHOW VIEW',NULL),
                    IF(gus.Create_routine_priv='Y','CREATE ROUTINE',NULL),
                    IF(gus.Alter_routine_priv='Y','ALTER ROUTINE',NULL),
                    IF(gus.Create_user_priv='Y','CREATE USER',NULL),
                    IF(gus.Event_priv='Y','EVENT',NULL),
                    IF(gus.Trigger_priv='Y','TRIGGER',NULL),
                    IF(gus.Create_tablespace_priv='Y','CREATE TABLESPACE',NULL)
                )
            )
        ),
        " ON *.* TO '",gus.User,"'@'",gus.Host,"' REQUIRE ",
        CASE gus.ssl_type
            WHEN 'ANY' THEN
                "SSL "
            WHEN 'X509' THEN
                "X509 "
            WHEN 'SPECIFIED' THEN
                CONCAT_WS("AND ",
                    IF((LENGTH(gus.ssl_cipher)>0),CONCAT("CIPHER '",CONVERT(gus.ssl_cipher USING utf8),"' "),NULL),
                    IF((LENGTH(gus.x509_issuer)>0),CONCAT("ISSUER '",CONVERT(gus.ssl_cipher USING utf8),"' "),NULL),
                    IF((LENGTH(gus.x509_subject)>0),CONCAT("SUBJECT '",CONVERT(gus.ssl_cipher USING utf8),"' "),NULL)
                )
            ELSE "NONE "
        END,
        "WITH ",
        IF(gus.Grant_priv='Y',"GRANT OPTION ",""),
        "MAX_QUERIES_PER_HOUR ",gus.max_questions," ",
        "MAX_CONNECTIONS_PER_HOUR ",gus.max_connections," ",
        "MAX_UPDATES_PER_HOUR ",gus.max_updates," ",
        "MAX_USER_CONNECTIONS ",gus.max_user_connections,
        ";"
    ) AS 'GRANT Statement (Reconstructed)'
FROM mysql.user gus
WHERE gus.Password != ''
/* SELECT * FROM mysql.user gus */

/* TODO: */
/* SELECT * FROM mysql.host ghs */
/* SELECT * FROM mysql.procs_priv gpr */

কোনও প্রশ্ন বা উদ্বেগের উত্তর / যাচাই করে খুশি


আমি জানি এটি কোশের নয়, তবে ... আপনার স্ক্রিপ্টটি আশ্চর্যজনক! এখন, আমাকে যা করতে হবে তা হ'ল এটি স্বয়ংক্রিয়। আমি আমার বাশ গরম করব
hanzo2001

2

এটি আপনাকে আরও ভাল দর্শন দেবে ...

mysql> select Host, Db, User, Insert_priv, Update_priv, Delete_priv, Create_tmp_table_priv, Alter_priv from mysql.db limit 1;
+------+------+------+-------------+-------------+-------------+-----------------------+------------+
| Host | Db   | User | Insert_priv | Update_priv | Delete_priv | Create_tmp_table_priv | Alter_priv |
+------+------+------+-------------+-------------+-------------+-----------------------+------------+
| %    | test |      | Y           | Y           | Y           | Y                     | Y          |
+------+------+------+-------------+-------------+-------------+-----------------------+------------+
1 row in set (0.00 sec)


0

এই উত্তরে উল্লিখিত হিসাবে , আপনি সমস্ত ব্যবহারকারীর ডাটাবেস-নির্দিষ্ট, টেবিল-নির্দিষ্ট, কলাম-নির্দিষ্ট এবং রুটিন-সুনির্দিষ্ট সুবিধার্থে তালিকাভুক্ত করতে নিম্নলিখিত কমান্ডের সেট চালাতে পারেন। নোট করুন যে আপনার এটি মাইএসকিউএল কমান্ড প্রম্পট নয় শেল থেকে চালানো দরকার।

mysql -u root --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -u root --skip-column-names -A

এই পদ্ধতির সুবিধা হ'ল আপনাকে অতিরিক্ত সফ্টওয়্যার ইনস্টল করার দরকার নেই।


0

আপনি যদি প্রায়শই ডেটাবেস পরিচালনা করেন তবে আপনি সম্ভবত কঠোর সুযোগ সুবিধা রাখতে চান। আপনি চেক চালানোর জন্য একটি সঞ্চিত পদ্ধতি ব্যবহার করতে পারেন। এই উদাহরণটি মারিয়্যাডবিতে কাজ করে স্ট্যান্ডার্ড মাইএসকিএল সংস্করণ দিয়ে কাজ করার জন্য একটি টুইঙ্কের প্রয়োজন হতে পারে।

মনসুর আলীর কাছ থেকে উত্তরটি ব্যবহার করে কলামগুলি পুনরায় সাজানো এবং কিছুটা আউটপুটকে আরও সুসংহত করার সাথে যোগ করা।

একটি মূল লগইন ব্যবহার:

USE mysql;
DELIMITER //

CREATE PROCEDURE ShowPrivs(start, end)
BEGIN
    SELECT Db, User, Host, Insert_priv, Update_priv, Delete_priv, Create_tmp_table_priv, Alter_priv FROM mysql.db order by Db, Host, User ASC;
END;
//

DELIMITER ;

পরিবর্তে mysql.user টেবিলটি পরীক্ষা করতে আপনি পদ্ধতিটি পরিবর্তন করতে পারেন।

ব্যবহার, একটি মূল লগইন ব্যবহার করে:

USE mysql;
CALL ShowPrivs();

আমি এই উত্তরের তৈরি প্রক্রিয়া অংশটি চালাতে উবুন্টুতে মাইএসকিএল ওয়ার্কবেঞ্চ ব্যবহার করেছি।

এখানে একপাশে এবং বিষয়টির বাইরে কিছুটা হলেও, আপনার অজানা হোস্ট বা ব্যবহারকারীদের দেখানোর পদ্ধতিও থাকতে পারে। অজানা হোস্টগুলির জন্য একটি উদাহরণ:

USE mysql;

DELIMITER //
CREATE PROCEDURE `ShowUnknownHosts`(IN Hosts_String VARCHAR(200))
BEGIN
    SELECT user,host FROM user
    WHERE FIND_IN_SET(host, Hosts_String) = 0;
END//

DELIMITER ;

ব্যবহারের নোট: কমা দ্বারা পৃথক হোস্টের একটি স্ট্রিং সরবরাহ করুন সুতরাং '' এর কেবল একটি সেট ব্যবহৃত হয়:

CALL ShowUnknownHosts('knownhost1,knownhost2');

পদ্ধতিতে অন্য একটি প্যারামিটার অন্তর্ভুক্ত করে আপনি কলামটি পরিবর্তনশীল করতে এবং শো-অজ্ঞাতহোস্টগুলি (ব্যবহারকারী, 'ব্যবহারকারী 1, ব্যবহারকারী 2') দিয়ে কল করতে পারেন; উদাহরণ স্বরূপ.

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