نحوه ایجاد یک کاربر جدید و اعطای مجوز در MySQL

0 acciones
0
0
0
0

Introducción

MySQL یک سیستم مدیریت پایگاه داده رابطه ای منبع باز است. معمولاً به عنوان بخشی از پشته LAMP (که مخفف لینوکس، آپاچی، MySQL و PHP است) استفاده می‌شود و از زمان نوشتن این مقاله، محبوب‌ترین پایگاه داده منبع باز در جهان است. این راهنما نحوه ایجاد یک کاربر MySQL جدید و اعطای مجوزهای لازم برای انجام انواع اقدامات را به آنها توضیح می دهد.

Requisitos previos

برای پیروی از این راهنما، باید به پایگاه داده MySQL دسترسی داشته باشید. این راهنما فرض می کند که این پایگاه داده بر روی یک سرور خصوصی مجازی که اوبونتو 20.04 را اجرا می کند، نصب شده است، اگرچه اصولی که در آن توضیح داده شده باید صرف نظر از نحوه دسترسی شما به پایگاه داده خود قابل اجرا باشند. اگر به پایگاه داده MySQL دسترسی ندارید و می خواهید خودتان آن را راه اندازی کنید، می توانید یکی از راهنماهای ما را در مورد نحوه نصب MySQL دنبال کنید. باز هم، صرف نظر از سیستم عامل اصلی سرور شما، روش‌های ایجاد یک کاربر MySQL جدید و اعطای مجوز به آنها معمولاً یکسان خواهد بود.

Crear un nuevo usuario

پس از نصب، MySQL یک حساب کاربری root ایجاد می کند که می توانید از آن برای مدیریت پایگاه داده خود استفاده کنید. این کاربر دارای امتیازات کامل بر سرور MySQL است، به این معنی که کنترل کاملی بر هر پایگاه داده، جدول، کاربر و غیره دارد. به همین دلیل، بهتر است از استفاده از این حساب خارج از عملکردهای اداری خودداری کنید. در این مرحله نحوه استفاده از کاربر ریشه MySQL برای ایجاد یک حساب کاربری جدید و اعطای امتیازات به آن توضیح داده شده است.

در سیستم‌های اوبونتو که MySQL 5.7 (و نسخه‌های بعدی) را اجرا می‌کنند، کاربر ریشه MySQL به‌طور پیش‌فرض و نه با رمز عبور، با استفاده از افزونه auth_socket احراز هویت می‌شود. این افزونه نیاز دارد که نام کاربر سیستم عاملی که کلاینت MySQL را فراخوانی می کند با نام کاربر MySQL مشخص شده در دستور مطابقت داشته باشد. این به این معنی است که شما باید دستور mysql را با sudo پیش ببرید تا آن را با امتیازات کاربر ریشه اوبونتو فراخوانی کنید تا به کاربر ریشه MySQL دسترسی پیدا کنید:

sudo mysql

Si su usuario root de MySQL está configurado para autenticación por contraseña, deberá usar un comando diferente para acceder a la consola de MySQL. El siguiente comando ejecutará su cliente MySQL con privilegios de usuario normales, y obtendrá privilegios de administrador en la base de datos simplemente autenticándose con la contraseña correcta:

mysql -u root -p

هنگامی که به اعلان MySQL دسترسی پیدا کردید، می توانید یک کاربر جدید با عبارت CREATE USER ایجاد کنید. اینها از این نحو کلی پیروی می کنند:

CREAR USUARIO 'username'@'host' IDENTIFICADO CON authentication_plugin POR 'password';

بعد از CREATE USER یک نام کاربری مشخص می کنید. این بلافاصله با یک علامت @ و سپس نام میزبانی که این کاربر از آن متصل می شود، دنبال می شود. اگر فقط قصد دارید به این کاربر به صورت محلی از سرور اوبونتو خود دسترسی داشته باشید، می توانید localhost را تعیین کنید. قرار دادن نام کاربری و میزبان در یک نقل قول همیشه ضروری نیست، اما انجام این کار می تواند به جلوگیری از خطاها کمک کند.

هنگام انتخاب افزونه احراز هویت کاربر، چندین گزینه دارید. افزونه auth_socket که قبلاً ذکر شد می تواند راحت باشد، زیرا امنیت قوی را بدون نیاز به کاربران معتبر برای وارد کردن رمز عبور برای دسترسی به پایگاه داده فراهم می کند. اما از اتصالات راه دور نیز جلوگیری می کند، که می تواند در زمانی که برنامه های خارجی نیاز به تعامل با MySQL دارند، کار را پیچیده کند.

به عنوان یک جایگزین، می‌توانید بخش WITH authentication_plugin از نحو را کاملاً کنار بگذارید تا کاربر با افزونه پیش‌فرض MySQL، caching_sha2_password، احراز هویت کند. مستندات MySQL این افزونه را به کاربرانی که می خواهند با رمز عبور وارد شوند به دلیل ویژگی های امنیتی قوی آن توصیه می کند.

Para crear un usuario que se autentique con `caching_sha2_password`, ejecute el siguiente comando. Asegúrese de que Sammy را به نام کاربری و رمز عبور ترجیحی خود به یک رمز عبور قوی انتخاب کنید:

CREAR USUARIO 'sammy'@'localhost' IDENTIFICADO POR 'contraseña';

یک مشکل شناخته شده در برخی از نسخه های PHP وجود دارد که باعث ایجاد مشکل در caching_sha2_password می شود. اگر قصد دارید از این پایگاه داده با یک برنامه PHP – برای مثال phpMyAdmin – استفاده کنید، ممکن است بخواهید کاربری ایجاد کنید که با افزونه mysql_native_password قدیمی‌تر، هرچند هنوز امن، احراز هویت کند:

CREAR USUARIO 'sammy'@'localhost' IDENTIFICADO CON mysql_native_password POR 'contraseña';

Si no estás seguro, siempre puedes crear un usuario que se autentique con caching_sha2_plugin y luego cambiarlo con este comando:

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Después de crear el nuevo usuario, puede otorgarle los privilegios adecuados.

Concesión de permisos de usuario

دستور کلی برای اعطای امتیازات کاربر به شرح زیر است:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

مقدار PRIVILEGE در این نحو مثال، مشخص می کند که کاربر مجاز است چه اقداماتی را در پایگاه داده و جدول مشخص شده انجام دهد. می‌توانید با جدا کردن هر کدام با کاما، چندین امتیاز را در یک دستور به یک کاربر اختصاص دهید. همچنین می توانید با وارد کردن ستاره (*) به جای پایگاه داده و نام جدول، امتیازات جهانی را به کاربر اعطا کنید. در SQL، ستاره ها کاراکترهای خاصی هستند که برای نشان دادن “همه” پایگاه داده ها یا جداول استفاده می شوند.

برای نشان دادن، دستور زیر به کاربر امتیازات جهانی برای ایجاد، تغییر و رها کردن پایگاه‌های داده، جداول و کاربران و همچنین قدرت درج، به‌روزرسانی و حذف داده‌ها از هر جدول روی سرور را می‌دهد. همچنین به کاربر این امکان را می دهد که داده ها را با SELECT جستجو کند، کلیدهای خارجی را با کلمه کلیدی REFERENCES ایجاد کند و عملیات FLUSH را با امتیاز RELOAD انجام دهد. با این حال، شما فقط باید به کاربران مجوزهای مورد نیاز خود را بدهید، بنابراین در صورت لزوم می توانید امتیازات کاربر خود را تنظیم کنید.

می توانید لیست کامل امتیازات موجود را در اسناد رسمی MySQL بیابید.

این بیانیه GRANT را اجرا کنید، و Sammy را با نام کاربری MySQL خود جایگزین کنید تا این امتیازات را به کاربر خود اعطا کنید:

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Tenga en cuenta que esta instrucción también incluye la opción WITH GRANT. Esto permite que su usuario de MySQL otorgue los permisos que tiene a otros usuarios del sistema.

برخی از کاربران ممکن است بخواهند به کاربر MySQL خود امتیاز ALL PRIVILEGES را اعطا کنند، که به آنها امتیازات ابرکاربر گسترده ای شبیه به امتیازات کاربر اصلی ارائه می دهد، مانند:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

No se deben otorgar privilegios tan amplios a la ligera, ya que cualquier persona con acceso a este usuario de MySQL tendrá control total sobre todas las bases de datos del servidor.

بسیاری از راهنماها پیشنهاد می‌کنند که دستور FLUSH PRIVILEGES را بلافاصله پس از یک عبارت CREATE USER یا GRANT اجرا کنید تا جداول اعطا را دوباره بارگیری کنید تا مطمئن شوید که امتیازات جدید اعمال می‌شوند:

FLUSH PRIVILEGES;

با این حال، طبق اسناد رسمی MySQL، هنگامی که جداول کمک هزینه را به طور غیرمستقیم با یک بیانیه مدیریت حساب مانند GRANT تغییر می دهید، پایگاه داده جداول کمک هزینه را بلافاصله در حافظه بارگذاری می کند، به این معنی که دستور FLUSH PRIVILEGES در مورد ما ضروری نیست. از طرفی اجرای آن هیچ تاثیر منفی روی سیستم نخواهد داشت.

اگر نیاز به لغو مجوز دارید، ساختار تقریباً مشابه اعطای آن است:

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';

توجه داشته باشید که هنگام لغو مجوزها، سینتکس ایجاب می کند که به جای TOکه هنگام اعطای مجوزها استفاده می کردید، از FROMاستفاده کنید.

با اجرای دستور SHOW GRANTS می توانید مجوزهای فعلی کاربر را بررسی کنید:

SHOW GRANTS FOR 'username'@'host';

همانطور که می توانید پایگاه داده ها را با DROP حذف کنید، می توانید از DROP برای حذف یک کاربر استفاده کنید:

DROP USER 'username'@'localhost';

پس از ایجاد کاربر MySQL و دادن امتیازات به آنها، می توانید از MySQL خارج شوید:

salida

En el futuro, para iniciar sesión como el nuevo usuario de MySQL, utilizará un comando como el siguiente:

mysql -u sammy -p

-p باعث می‌شود که کلاینت MySQL از شما رمز عبور کاربر MySQL را برای احراز هویت درخواست کند.

Resultado

با دنبال کردن این آموزش، یاد گرفتید که چگونه کاربران جدید اضافه کنید و مجوزهای مختلفی را در پایگاه داده MySQL به آنها بدهید. از اینجا، می‌توانید به کاوش و آزمایش تنظیمات مجوزهای مختلف برای کاربر MySQL خود ادامه دهید، یا ممکن است بخواهید درباره برخی از تنظیمات سطح بالاتر MySQL اطلاعات بیشتری کسب کنید.

[Total: 1   Promedio: 5/5]
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar

Cómo instalar IBSng en CentOS 6/7

Tutorial de instalación de IBSng en CentOS 6/7. En este artículo se proporciona un tutorial de instalación de IBSng en CentOS 6/7 para ayudarle…