Početna / Blog / Post
Kako stvoriti MySQL korisnika i dodijeliti mu dozvole u AWS RDS-u na Ubuntu linuxu?
23 siječnja, 2021 od
Kako stvoriti MySQL korisnika i dodijeliti mu dozvole u AWS RDS-u na Ubuntu linuxu?
Goran Štimac

Kako mogu stvoriti novog MySQL korisnika i dodijeliti dozvole u usluzi AWS RDS u oblaku iz naredbenog retka Linuxa?

MySQL je besplatna baza podataka otvorenog koda. Mnoga web mjesta na Internetu koriste MySQL zajedno s Pythonom, Perlom, PHP-om i drugim programskim jezicima na strani poslužitelja. AWS nudi upravljanu MySQL uslugu s opcijama visoke dostupnosti, uključujući sigurnosne kopije, obnavljanja i zakrpe. Ovaj kratki vodič objašnjava kako stvoriti MySQL korisničke račune i dodijeliti privilegije na AWS RDS-u pomoću Linux naredbenih linija.

Preduvjet

Sljedeće naredbe rade s instancom MariaDB i MySQL RDS.

Očito vam je potreban AWS račun zajedno s MySQL / MariaDB RDS-om i pokrenutom instancom EC2 / Lightsail. Također pretpostavljam da imate mysql klijent instaliran na vašem EC2 / Lightsail Linux poslužitelju. Na primjer, mysql klijent možemo instalirati na sljedeći način. Prvo se prijavite pomoću naredbe ssh:

ssh -i ~/.ssh/EC2-keypem.pem ec2-user@ec2-54-161-60-164.compute-1.amazonaws.com

Dalje, instalirajte mysql klijent prema Linux distro-u.

sudo apt install mysql-client

Testirajte AWS RDS povezanost s CLI-ja
Sada se možemo povezati s AWS RDS mysql poslužiteljem pomoću naredbe mysql:

mysql -u {USER_NAME} -h {AWS_RDS_HOST_NAME} -P {MYSQL_PORT} -p

Na primjer:

mysql -u masteruser -h mysql–instance1.134342.us-west-1.rds.amazonaws.com -P 3306 -p

Kako stvoriti MySQL korisničke račune i dodijeliti privilegije

Prvo ću se prijaviti kao ‘dbmasteruser’ korisnik:

mysql -u dbmasteruser -h ls-gdgdg6585684767gdgjdg.eetg96lp.us-east-1.rds.amazonaws.com -P 3306 -p

Korak 1: Stvorite novu bazu podataka

U većini slučajeva trebate stvoriti novu bazu podataka. Međutim, preskočite ovaj korak ako na RDS-u imate postojeće MySQL baze podataka. Stvorimo novu MySQL bazu podataka koja se zove blog:

CREATE DATABASE blog;

Korak 2: Stvorite novi MySQL korisnički račun na AWS RDS-u

Stvorit ću novog korisnika s imenom 'goran' za bazu podataka koja će se zvati goran_blog

CREATE USER 'goran'@'%' IDENTIFIED BY 'my_Super_Secret_Password';

Nadalje, SSL veze za određene korisničke račune možemo prisiliti na sljedeći način tijekom stvaranja novog korisnika iz sigurnosnih razloga:

CREATE USER 'tom'@'%' IDENTIFIED BY 'password' REQUIRE SSL;

Bilo koji korisnik klijenta / poslužitelja može se povezati na AWS RDS kada je dio imena klijentskog hosta postavljen na '%'. Stoga, '%' možemo zamijeniti stvarnom IP adresom ECC / Lightsail poslužitelja ili VPC podmrežom radi veće sigurnosti. Na primjer:

CREATE USER 'goran'@'172.26.9.11' IDENTIFIED BY 'password';
CREATE USER 'goran'@'172.26.0.0/255.255.240.0' IDENTIFIED BY 'passwd';

SSL vezu možemo prisiliti za postojeći MySQL korisnički račun kako slijedi:

ALTER USER 'user_name'@'client_ip' REQUIRE SSL;
ALTER USER 'goran'@'%' REQUIRE SSL;

Prema zadanim postavkama na korisničkom računu AWS RDS dodjeljuju se sljedeće privilegije. Pokrenimo naredbu SHOW GRANTS SQL za korisnika pod imenom 'goran':

SHOW GRANTS for userName;
SHOW GRANTS for goran;

Korak 3: Dodijelite privilegije MySQL korisničkom računu

Međutim, mysql račun postavljen s minimalnim ili bez privilegija baze podataka. Evo popisa standardnih privilegija:

  1. Privilegije USAGE podataka uključuju: SELECT, INSERT, UPDATE, DELETE, i FILE

  2. Privilegije strukture uključuju: CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE, CREATE VIEW, EVENT, i TRIGGER

  3. Administratorske povlastice uključuju: GRANT, SUPER, PROCESS, RELOAD, SHUTDOWN, SHOW DATABASES, LOCK TABLES, REFERENCES, REPLICATION CLIENT, REPLICATION SLAVE, i CREATE USER

  4. SSL privilegije uključuju: REQUIRE NONE, REQUIRE SSL, REQUIRE X509

  5. ALL PRIVILEGES: Prečac za dodjeljivanje svih privilegija mysql korisničkom računu.

Sintaksa je sljedeća za dodjeljivanje različitih korisničkih dozvola:

GRANT permission ON DB_NAME.TABLE_NAME TO 'userNameHere'@'client_ip';
GRANT permission1,permission2 ON DB.TABLE TO 'userNameHere'@'client_vpc_sub_net';

Na primjer:

GRANT SELECT, INSERT, UPDATE, DELETE ON blog.* TO 'goran'@'%';

Evo još jednog primjera za vpc sub / net:

GRANT SELECT, INSERT, UPDATE, DELETE ON blog.* TO 'goran'@'172.26.0.0/255.255.240.0';

U ovom primjeru dodijelite razne povlastice strukture:

GRANT CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `blog`.* TO 'goran'@'%';

Naravno, možemo odobriti i SVE PRIVILEGIJE kako slijedi za `blog` bazu podataka za korisnika 'goran':

GRANT ALL PRIVILEGES ON `blog`.* TO 'goran'@'%';

Recimo da trebate stvoriti novu bazu podataka pod nazivom 'salesstats' s korisnikom pod nazivom 'sai' i odobriti sve PRIVILEGIJE:

CREATE DATABASE salesstats;
CREATE USER 'sai'@'%' IDENTIFIED BY 'PASSWORD_HERE';
GRANT ALL PRIVILEGES ON `salesstats`.* TO 'sai'@'%';
SHOW GRANTS for sai;
SHOW GRANTS for 'sai'@'%';

Napominjemo da morate koristiti SQL FLUSH PRIVILEGES izraz; samo kada izravno modificirate tablice dodjele pomoću izraza kao što su INSERT, UPDATE ili DELETE:

FLUSH PRIVILEGES;

Step 4: Test it

Jednostavno pokrenite sljedeću naredbu iz druge instance EC2:

mysql -u sai -h mysql–instance1.134342.us-west-1.rds.amazonaws.com -P 3306 -p salesstats

Šifrirana veza s RDS instancom

Prvo preuzmite paket certifikata koji sadrži i srednji i korijenski certifikat pomoću naredbe wget:

wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

Sada ga spojite na sljedeći način:

mysql -h mysql–instance1.134342.us-west-1.rds.amazonaws.com --ssl-ca=rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY -u sai -P 3306 -p salesstats

Sada, ostatak vodiča objašnjava kako preokrenuti sve korake. Drugim riječima, naučit ćete kako ukloniti bazu podataka, korisnika i davanja / dopuštenja pomoću mysql CLI.

Korak 5: Opozovite privilegije s AWS RDS MySQL korisničkog računa

Izraz REVOKE SQL dopušta sysadminima opoziv privilegija i uloga. Sintaksa je:

REVOKE ALL PRIVILEGE1,PRIVILEGE2 ON database.* FROM 'user'@'client_ip';
REVOKE ALL PRIVILEGES ON database.* FROM 'user'@'vpc_sub_net';
REVOKE INSERT, DELETE ON `salesstats`.* FROM 'sai'@'%';
REVOKE ALL PRIVILEGES ON `salesstats`.* FROM 'sai'@'%';

Korak 6: Izbrišite korisnički račun AWS RDS MySQL

Da biste uklonili korisnički račun AWS RDS MySQL, koristite izjavu DROP sql kako slijedi:

DROP USER 'user'@'client_ip';
DROP USER 'sai'@'%';

Korak 7: Uklonite postojeću AWS RDS MySQL bazu podataka

SQL izraz DROP DATABASE briše sve tablice u bazi podataka i uklanja bazu podataka. Stoga, budite vrlo oprezni s ovom izjavom:

DROP DATABASE db_name_here;
DROP DATABASE salesstats;

Potvrdite:

SHOW DATABASES;

Imajte na umu da kada se baza podataka izbaci iz RDS-a, povlastice dodijeljene posebno za bazu podataka neće se automatski ispustiti. Moraju se ručno ispustiti kako je gore opisano.

Zaključak

U ovom vodiču naučili ste kako stvoriti nove MySQL korisnike na AWS RDS-u pomoću naredbenog retka Linux ili Unix mysql. Pogledajte RDS dokumente ovdje za više informacija.