Huawei Cloud – GausDB – DEV Community

بسته Huawei Cloud GaussDB را خریداری کرده و به کنسول مدیریت دسترسی پیدا کنید. سپس از منوی خدمات، پایگاه داده و GaussDB را اتنخاب کنید.
برای ورود از راه دور به ECSS،ابتدا از محیط Xfce استفاده کنید و بر روی ترمینال Xfce کلیک کرده و دستور زیر را اجرا کنید تا به ECS وصل شوید:
ssh root@EIP
سپس بسته مشتری gsql را دانلود و از حالت فشرده خارج کنید و سرری کنید به فایلهای داخل آن. سپس محتویات فایل را از حالت فشرده خارج کنید و وارد دایرکتوری شوید. سپس فایل GaussDB-Kernel-V500R001C20-EULER-64bit-gsql.tar.gz را به مسیر /opt/ کپی کنید و سپس به این مسیر وارد شوید و فایل را از حالت فشرده خارج کنید.
با دستور gsql از کلاینت gsql برای اتصال به پایگاه داده استفاده کنید و یک پایگاه داده به نام devdb با رمزعبور خود ایجاد کنید. سپس یک کاربر با نام hccdp و دسترسی SYSADMIN ایجاد کرده و یک جدول را در devdb ایجاد کنید. سپس با استفاده از مدیریت کاربران، کاربر jim را ایجاد کنید و مجوزهای مورد نیاز را به او اختصاص دهید. همچنین میتوانید طرحوارهها و نقشها را مدیریت کنید، اشیای پایگاه داده را ایجاد کنید، جلسات را مشاهده و حذف کنید، و یک روش ذخیره شده برای خروجی یک مقدار خاص در یک جدول جستجو ایجاد کنید. به این ترتیب، مدیریت اطلاعات و دسترسی به پایگاه داده GaussDB را آسان و بهینه کنید.
HUAWEI CLOUD GAUSDB
- خرید یک نمونه GaussDB(1) به کنسول مدیریت وارد شوید و لیست خدمات > پایگاه داده > GaussDB را انتخاب کنید.
- ورود از راه دور به ECSSمرحله 1: با استفاده از Xfce وارد ECS شوید. روی ترمینال Xfce روی دسکتاپ دوبار کلیک کنید و دستور زیر را برای ورود به ECS اجرا کنید:
ssh root@*EIP*
مرحله 2: بسته مشتری gsql را دانلود و از حالت فشرده خارج کنید.
wget https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1642684986086/GaussDB_opengauss_client_tools.zip
unzip GaussDB_opengauss_client_tools.zip
cd /root/GaussDB_opengauss_client_tools/Euler2.5_X86_64
cp GaussDB-Kernel-V500R001C20-EULER-64bit-gsql.tar.gz /opt
cd /opt/
tar -zxvf GaussDB-Kernel-V500R001C20-EULER-64bit-gsql.tar.gz
source gsql_env.sh
مرحله 3: از کلاینت gsql برای اتصال به پایگاه داده و ایجاد پایگاه داده و کاربر استفاده کنید. در دستور زیر، 192.168.0.72 آدرس IP گره اولیه GaussDB و رمز عبور شما است. در صورت نیاز آنها را تعویض کنید.
gsql -h 192.168.0.72 -d postgres -p 8000 -U root -W yourpassword -r
CREATE DATABASE devdb ENCODING 'UTF8' template = template0;
\q
آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
gsql -h 192.168.0.72 -d devdb -p 8000 -U root -W yourpassword -r
CREATE USER hccdp SYSADMIN IDENTIFIED BY "yourpassword";
\q
دستور ورود آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
gsql -h 192.168.0.72 -d devdb -p 8000 -U hccdp -W yourpassword -r
\q
- ایجاد، مشاهده، اصلاح یا حذف یک پایگاه داده مرحله 1: وارد یک پایگاه داده شوید. آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
cd /opt/
source gsql_env.sh
gsql -h 192.168.0.72 -d devdb -p 8000 -U hccdp -W yourpassword -r
مرحله 2: پایگاه داده testdb را ایجاد کنید.
CREATE DATABASE testdb;
مرحله 3: مشاهده پایگاه های داده. روش 1: فهرست پایگاه داده را در کاتالوگ سیستم pg_database جستجو کنید.
SELECT datname FROM pg_database;
روش 2: دستور \l را برای مشاهده لیست پایگاه داده سیستم پایگاه داده اجرا کنید.
\l
مرحله 4: پایگاه داده را تغییر دهید. مسیر جستجوی پیش فرض پایگاه داده را تغییر دهید.
ALTER DATABASE testdb SET search_path TO pa_catalog,public;
به پایگاه داده testdb بروید.
\c testdb
رمز عبور پایگاه داده testdb را وارد کرده و دستور زیر را اجرا کنید تا بررسی کنید که آیا مسیر جستجو تغییر کرده است یا خیر.
show search_path;
مرحله 5: نام پایگاه داده را تغییر دهید. به پایگاه داده پیش فرض postgres بروید.
\c postgres
برای تغییر نام testdb به testdb1 دستور زیر را اجرا کنید:
ALTER DATABASE testdb RENAME TO testdb1;
بررسی کنید که آیا نام تغییر کرده است یا خیر.
\l
مرحله 6: پایگاه داده را حذف کنید.
DROP DATABASE testdb1;
- ایجاد، مشاهده، اصلاح و حذف جداول Row-and Column-Store مرحله 1: یک جدول row-store ایجاد کنید.
CREATE TABLE PART
(
P_PARTKEY BIGINT NOT NULL,
P_NAME VARCHAR(55) NOT NULL,
P_MFGR CHAR(25) NOT NULL,
P_BRAND CHAR(10) NOT NULL,
P_TYPE VARCHAR(25) NOT NULL,
P_SIZE BIGINT NOT NULL,
P_CONTAINER CHAR(10) NOT NULL,
P_RETAILPRICE DECIMAL(15,2) NOT NULL,
P_COMMENT VARCHAR(23) NOT NULL
)
WITH (ORIENTATION = ROW);
مرحله 2: یک جدول فروشگاه ستونی ایجاد کنید.
CREATE TABLE PART1
(
P_PARTKEY BIGINT NOT NULL,
P_NAME VARCHAR(55) NOT NULL,
P_MFGR CHAR(25) NOT NULL,
P_BRAND CHAR(10) NOT NULL,
P_TYPE VARCHAR(25) NOT NULL,
P_SIZE BIGINT NOT NULL,
P_CONTAINER CHAR(10) NOT NULL,
P_RETAILPRICE DECIMAL(15,2) NOT NULL,
P_COMMENT VARCHAR(23) NOT NULL
)
WITH (ORIENTATION = COLUMN);
مرحله 3: اطلاعات جدول را مشاهده کنید
\d
مرحله 4: ویژگی های جدول را با اضافه کردن یک ستون تغییر دهید.
ALTER TABLE part ADD COLUMN p_col1 bigint;
بررسی کنید که آیا ستون اضافه شده است یا خیر.
\d part
مرحله 5: مقدار پیش فرض را در ستون اضافه کنید.
ALTER TABLE part ALTER COLUMN p_col1 SET DEFAULT 1;
بررسی کنید که آیا مقدار پیش فرض اضافه شده است یا خیر.
\d part
مرحله 6: مقدار پیش فرض را از ستون حذف کنید.
ALTER TABLE part ALTER COLUMN p_col1 drop DEFAULT ;
بررسی کنید که آیا مقدار پیش فرض حذف شده است یا خیر.
\d part
مرحله 7: نوع داده یک ستون را تغییر دهید.
ALTER TABLE part MODIFY p_col1 INT;
بررسی کنید که آیا نوع داده تغییر کرده است یا خیر.
\d part
مرحله 8: نام یک ستون را تغییر دهید.
ALTER TABLE part RENAME p_col1 to p_col;
بررسی کنید که آیا نام ستون تغییر کرده است یا خیر.
\d part
مرحله 9: یک ستون را حذف کنید. ستون p_col را از قسمت جدول حذف کنید.
ALTER TABLE part DROP COLUMN p_col;
بررسی کنید که آیا ستون حذف شده است یا خیر.
\d part
مرحله 10: جداول را حذف کنید. جدول PART را حذف کنید.
DROP TABLE PART;
جدول PART1 را حذف کنید.
DROP TABLE PART1;
بررسی کنید که آیا جداول حذف شده اند یا خیر.
\d
- مدیریت کاربران مرحله 1: کاربر jim را ایجاد کنید. شما می توانید رمز عبور خود را تنظیم کنید، اما باید رمز عبور را به خاطر بسپارید.
CREATE USER jim PASSWORD 'yourpassword';
مرحله 2: لیست کاربران را مشاهده کنید.
SELECT * FROM pg_user;
مرحله 3: کاربر dim را ایجاد کنید و اجازه ایجاد یک پایگاه داده را بدهید
CREATE USER dim CREATEDB PASSWORD 'yourpassword';
مرحله 4: رمز ورود کاربر jim را از رمز عبور خود به رمز عبور دیگری تغییر دهید
ALTER USER jim IDENTIFIED BY 'yourpassword' REPLACE 'anotherpassword';
مرحله 5: فرض کنید که جلسه اصلی A و جلسه جدید B است.
بررسی کنید که آیا رمز عبور در جلسه B تغییر کرده است یا خیر.
به دایرکتوری بروید و دستور gsql را اجرا کنید.
cd /opt/
source gsql_env.sh
دستور ورود آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
gsql -h 192.168.0.72 -d postgres -U jim -W yourpassword -p 8000 -r
مرحله 6: به جلسه A برگردید و مجوز CREATEROLE را به کاربر jim بدهید.
ALTER USER jim CREATEROLE;
توجه: مراحل 7 و 8 را در جلسه A انجام دهید. مرحله 7: بررسی کنید که آیا مجوز داده شده است یا خیر.
\du jim
مرحله 8: حساب جیم را قفل کنید.
ALTER USER jim ACCOUNT LOCK;
مرحله 9: یک جلسه C ایجاد کنید، به عنوان user jim وارد شوید و بررسی کنید که آیا حساب قفل شده است یا خیر. به دایرکتوری بروید و دستور gsql را اجرا کنید.
cd /opt/
source gsql_env.sh
به عنوان کاربر jim وارد gsql شوید. آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
gsql -h 192.168.0.72 -d postgres -U jim -W yourpassword -p 8000 -r
اگر اطلاعات زیر نمایش داده شود، کاربر jim قفل شده است:
مرحله 10: به جلسه A برگردید و حساب جیم را باز کنید.
ALTER USER jim ACCOUNT UNLOCK;
مرحله 11: به جلسه C برگردید، به عنوان user jim وارد شوید و بررسی کنید که آیا حساب باز شده است یا خیر. آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
gsql -h 192.168.0.72 -d postgres -U jim -W yourpassword -p 8000 -r
- به جلسه A برگردید و جیم کاربر را حذف کنید.
DROP USER jim CASCADE;
- مدیریت طرحواره مرحله 1: ایجاد طرحواره ds.مدیریت Schema به چندین کاربر اجازه می دهد تا از یک پایگاه داده بدون تداخل با یکدیگر استفاده کنند. هر پایگاه داده می تواند یک یا چند طرحواره داشته باشد. هنگامی که کاربر در یک پایگاه داده ایجاد می شود، سیستم به طور خودکار یک طرحواره با همان نام کاربر
CREATE SCHEMA ds;
بررسی کنید که آیا طرحواره ایجاد شده است یا خیر
\dn
مرحله 2: نام schema را از ds به ds_new تغییر دهید.
ALTER SCHEMA ds RENAME TO ds_new;
بررسی کنید که آیا نام طرحواره تغییر کرده است یا خیر.
\dn
مرحله 3: جک کاربر ایجاد کنید.
CREATE USER jack PASSWORD 'yourpassword';
مرحله 4: صاحب ds_new را به جک تغییر دهید
ALTER SCHEMA ds_new OWNER TO jack;
مرحله 5: مالک طرحواره را مشاهده کنید.
SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, pg_user u WHERE s.nspowner = u.usesysid;
مرحله 6: جک کاربر و schema ds_new را حذف کنید.
DROP SCHEMA ds_new;
DROP USER jack;
- اعطای مجوزهای سیستم و مجوزهای شی به کاربران یا RolesStep 1: user joe را ایجاد کنید و مجوز sysadmin را به آن بدهید.
CREATE USER joe PASSWORD 'yourpassword';
ALTER USER joe with sysadmin;
بررسی کنید که آیا مجوز داده شده است یا خیر.
\du
مرحله 2: مجوز sysadmin کاربر joe را لغو کنید، schema tpcds را ایجاد کنید و دلیل جدول را برای طرحواره ایجاد کنید.
ALTER USER joe with nosysadmin;
CREATE SCHEMA tpcds;
CREATE TABLE tpcds.reason
(
r_reason_sk INTEGER NOT NULL,
r_reason_id CHAR(16) NOT NULL,
r_reason_desc VARCHAR(20)
);
فرض کنید که جلسه فعلی A و یک جلسه جدید B است. در جلسه B، به عنوان user joe به پایگاه داده متصل شوید و بررسی کنید که آیا user joe مجوز دلیل جدول در schema tpcds را دارد یا خیر.
cd /opt/
source gsql_env.sh
آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید.
gsql -h 192.168.0.174 -d postgres -p 8000 -U joe -W yourpassword -r
بررسی کنید که آیا کاربر جو مجوز دلیل جدول در schema tpcds را دارد یا خیر.
select * from tpcds.reason;
مرحله 3: به جلسه A برگردید و اجازه استفاده از schema tpcds و همه مجوزها را برای دلیل جدول به کاربر joe بدهید.
GRANT USAGE ON SCHEMA tpcds TO joe;
GRANT ALL PRIVILEGES ON tpcds.reason TO joe;
به جلسه B بروید و بررسی کنید که آیا کاربر joe مجوز دلیل جدول در schema tpcds را دارد یا خیر.
select * from tpcds.reason;
مرحله 4: به جلسه A برگردید و به جو اجازه پرس و جو برای پرس و جو از ستون های r_reason_sk، r_reason_id و r_reason_desc و اجازه به روز رسانی ستون r_reason_desc را در استدلال جدول در schema tpcds بدهید.
GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe;
مرحله 5: اجازه اتصال و ایجاد طرحواره برای پایگاه داده postgres را به کاربر جو اعطا کنید و به این کاربر اجازه دهید این مجوزها را به کاربران دیگر اعطا کند.
GRANT create,connect on database postgres TO joe WITH GRANT OPTION;
به جلسه B بروید و بررسی کنید که آیا کاربر جو مجوز پرس و جو و به روز رسانی دلیل جدول را در طرحواره tpcds دارد یا خیر. بررسی کنید که آیا مجوز پرس و جو وجود دارد یا خیر.
SELECT r_reason_sk,r_reason_id,r_reason_desc FROM tpcds.reason;
بررسی کنید که آیا مجوز بهروزرسانی وجود دارد یا خیر.
UPDATE tpcds.reason SET r_reason_desc="test";
مرحله 6: به جلسه A برگردید، role tpcds_manager را ایجاد کنید، مجوزهای دسترسی و ایجاد نقش را در schema tpcds به این نقش اعطا کنید، اما اجازه ندهید این نقش این مجوزها را به دیگران اعطا کند.
CREATE ROLE tpcds_manager PASSWORD 'yourpassword';
بررسی کنید که آیا نقش tpcds_manager اضافه شده است یا خیر
\du
GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager;
مرحله 7: مدیر نقش ایجاد کنید، مجوزهای جو را به مدیر بدهید و به مدیر اجازه دهید این مجوزها را به دیگران اعطا کند.
CREATE ROLE manager PASSWORD 'yourpassword';
GRANT joe TO manager WITH ADMIN OPTION;
مرحله 8: نقش senior_manager را ایجاد کنید و مجوزهای مدیر را به senior_manager اعطا کنید.
CREATE USER senior_manager PASSWORD 'yourpassword';
GRANT manager TO senior_manager;
مرحله 9: لغو مجوزها و حذف کاربران.
DROP USER manager;
REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe;
REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe;
REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager;
DROP ROLE tpcds_manager;
DROP USER senior_manager;
DROP USER joe CASCADE;
- بررسی اینکه آیا یک شی از قبل وجود دارد یا نه قبل از ایجاد آن مرحله 1: قبل از ایجاد آن، بررسی کنید که آیا یک کاربر از قبل وجود دارد یا خیر.
SELECT usename FROM pg_user WHERE usename="dbtest";
CREATE USER dbtest WITH sysadmin PASSWORD 'yourpassword';
مرحله 2: از پایگاه داده به عنوان کاربر hccdp خارج شوید و به عنوان کاربر جدید dbtest به پایگاه داده متصل شوید. از پایگاه داده فعلی خارج شوید.
\q
به عنوان dbtest کاربر به پایگاه داده devdb متصل شوید. آدرس IP موجود در دستور را با یکی از گره اصلی GaussDB جایگزین کنید.
gsql -h 192.168.0.174 -d postgres -p 8000 -U dbtest -W yourpassword -r
مرحله 3: بررسی کنید که آیا طرحواره ایجاد شده است یا خیر.
SELECT nspname FROM pg_namespace WHERE nspname="dbtest";
اگر طرحواره ای قبلا ایجاد شده باشد، هشدار زیر نمایش داده می شود.
CREATE SCHEMA dbtest;
مرحله 4: قبل از ایجاد پایگاه داده بررسی کنید که آیا پایگاه داده از قبل وجود دارد یا خیر.
SELECT datname FROM pg_database WHERE datname="db_test";
CREATE DATABASE db_test;
مرحله 5: قبل از ایجاد جدول، بررسی کنید که آیا جدول از قبل وجود دارد یا خیر.
SELECT tablename FROM pg_tables WHERE schemaname="dbtest";
CREATE TABLE test (id int, name varchar(100));
مرحله 6: تمام اشیاء ایجاد شده توسط کاربر فعلی را مشاهده کنید.
SELECT relname FROM pg_class WHERE relowner=(select usesysid from pg_user where usename="dbtest");
مرحله 7: اشیاء پایگاه داده و کاربران را حذف کنید و سپس از پایگاه داده فعلی خارج شوید.
DROP TABLE test;
DROP SCHEMA dbtest;
DROP DATABASE db_test;
\q
- مشاهده و حذف جلسات مرحله 1: به عنوان کاربر hccdp وارد پایگاه داده شوید.
cd /opt/
source gsql_env.sh
آدرس IP موجود در دستور را با یکی از گره های اولیه GaussDB جایگزین کنید. رمز عبور همان رمزی است که شما تعیین کرده اید.
gsql -h 192.168.0.174 -d postgres -p 8000 -U hccdp -W yourpassword -r
مرحله 4: pg_stat_activity را با استفاده از خواب جستجو کنید.
SELECT pid,usename,query FROM pg_stat_activity WHERE QUERY LIKE '%sleep%';
مرحله 5: از تابع pg_terminate_backend برای پایان دادن به جلسه استفاده کنید. توجه: در دستور زیر pid را با ارقام شکل قبل جایگزین کنید.
SELECT pg_terminate_backend(pid);
مرحله 6: رابط پوسته اصلی را مشاهده کنید. خطای زیر نمایش داده می شود:
- طراحی یک روش ذخیره شده برای خروجی یک مقدار خاص در یک جدول جستجو مرحله 1: یک جدول ایجاد کنید.
CREATE TABLE employee (id varchar(100),name varchar(100),salary int);
CREATE TABLE ep_grade (id varchar(100),grade varchar(100),flag int);
مرحله 2: وارد کردن داده ها
Insert into employee values (1,'Sam',5000);
Insert into employee values (2,'Lucy',5000);
Insert into employee values(3,'Linda',5000);
Insert into employee values (4,'Jack',5000);
Insert into employee values (5,'Mary',5000);
Insert into employee values(6,'Alex',5000);
Insert into employee values(7,'Anna',5000);
Insert into employee values (8,'Peter',5000);
Insert into ep_grade values(1,'A',2022);
Insert into ep_grade values(2,'S',2021);
Insert into ep_grade values(3,'B',2021);
Insert into ep_grade values(4,'B',2021);
Insert into ep_grade values(5,'A',2021);
Insert into ep_grade values(6,'C',2022);
Insert into ep_grade values(7,'C',2021);
Insert into ep_grade values(8,'B',2022);
مرحله 3: عبارات قبلی را با توجه به ساختار رویه ذخیره شده یکپارچه کنید
CREATE OR REPLACE PROCEDURE proc_emp()
AS
(1) پارامترها را اعلام کنید.
DECLARE
EP_ID VARCHAR(100);
GRADE VARCHAR(10);
SALARY INT;
(2) مکان نما را اعلام کنید.
CURSOR C1 IS select distinct id,grade FROM ep_grade where Flag = 2021;
3) یک دستور حلقه طراحی کنید.
BEGIN
OPEN C1;
LOOP
FETCH C1 INTO EP_ID,GRADE;
EXIT WHEN C1%NOTFOUND;
Case GRADE
when 'S'
then update employee set salary = salary+1000 where id=EP_ID;
when 'A'
then update employee set salary = salary+500 where id=EP_ID;
when 'B'
then update employee set salary = salary+100 where id=EP_ID;
when 'C'
then update employee set salary = salary-200 where id=EP_ID;
END Case;
(4) خروجی محتوای رویه ذخیره شده را طراحی کنید.
DBE_OUTPUT.PRINT_LINE('ID: '||EP_ID||', Grade: '||GRADE||', updated.');
END LOOP;
CLOSE C1;
END;
/
مرحله 4: فراخوانی یک روش ذخیره شده.
call proc_emp();