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. Mnoge internet aplikacije na 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 koristeći Linux naredbene retke.
Preduvjet
Trebate AWS račun zajedno s MySQL / MariaDB RDS-om i pokrenutu instancu 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 ssh naredbom
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-om, sada se možemo povezati na AWS RDS MySQL poslužitelj 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
1. korak: 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 naziva blog
CREATE DATABASE blog;
2. korak: Stvorite novi MySQL račun na AWS RDS
Stvorit ću novog korisnika koji se zove goran za bazu podataka koja se zove goran_blog
CREATE USER 'goran'@'%' IDENTIFIED BY 'my_Super_Secret_Password';
Nadalje, SSL veze za određene korisničke račune mogu se forsirati na sljedeći način prilikom stvaranja novog korisnika iz sigurnosnih razloga
CREATE USER 'goran'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
Bilo koji korisnik klijenta/poslužitelja može se povezati na AWS RDS kada je dio imena hosta klijenta postavljen na ‘%’. Stoga možemo zamijeniti ‘%’ stvarnom IP adresom ECC/Lightsail poslužitelja ili VPC podmreže 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';
Možemo prisiliti SSL vezu za postojeći MySQL račun kako slijedi
ALTER USER 'user_name'@'client_ip' REQUIRE SSL;
ALTER USER 'goran'@'%' REQUIRE SSL;
Prema zadanim postavkama na računu AWS RDS dodjeljuju se sljedeće privilegije. Pokrenimo naredbu SHOW GRANTS SQL
za korisnika koji se zove goran:
SHOW GRANTS for userName;
SHOW GRANTS for goran;
3. korak: Dodijelite privilegije MySQL računu
Međutim, MySQL račun postavlja se s minimalnim privilegijama baze podataka ili bez njih. Evo popisa standardnih privilegija:
Privilegije USAGE podataka uključuju: SELECT, INSERT, UPDATE, DELETE, and FILE
Privilegije strukture uključuju: CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE, CREATE VIEW, EVENT, and TRIGGER
Administratorske privilegije uključuju: GRANT, SUPER, PROCESS, RELOAD, SHUTDOWN, SHOW DATABASES, LOCK TABLES, REFERENCES, REPLICATION CLIENT, REPLICATION SLAVE, and CREATE USER
SSL privilegije uključuju: REQUIRE NONE, REQUIRE SSL, REQUIRE X509
ALL PRIVILEGES: Prečac za dodjeljivanje svih MySQL privilegija 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, ALL PRIVILEGES također možemo odobriti kako slijedi za blog bazu podataka za korisnika goran:
GRANT ALL PRIVILEGES ON `blog`.* TO 'goran'@'%';
Recimo da trebate stvoriti novu bazu podataka nazvanu salesstats s korisnikom koji se zove ivan i odobriti ALL PRIVILEGES:
CREATE DATABASE salesstats;
CREATE USER 'ivan'@'%' IDENTIFIED BY 'PASSWORD_HERE';
GRANT ALL PRIVILEGES ON `salesstats`.* TO 'ivan'@'%';
SHOW GRANTS for ivan;
SHOW GRANTS for 'ivan'@'%';
Imajte na umu da morate koristiti SQL naredbu FLUSH PRIVILEGES;
samo kada izravno mijenjate tablice dodjele pomoću naredbi kao što su INSERT, UPDATE ili DELETE:
FLUSH PRIVILEGES;
4. korak: Test
Jednostavno pokrenite sljedeću naredbu s 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 se povežite 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 ivan -P 3306 -p salesstats
Ostatak vodiča objašnjava kako preokrenuti sve korake. Drugim riječima, naučit ćete kako ukloniti bazu podataka, korisnika i odobriti/odobriti pomoću MySQL CLI.
5. korak: Opozovite privilegije s AWS RDS MySQL 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 'ivan'@'%';
REVOKE ALL PRIVILEGES ON `salesstats`.* FROM 'ivan'@'%';
6. korak: Izbrišite AWS RDS MySQL račun
Da biste uklonili AWS RDS MySQL račun, upotrijebite DROP SQL izraz kako slijedi:
DROP USER 'user'@'client_ip';
DROP USER 'sai'@'%';
7. korak: Uklonite postojeću bazu podataka AWS RDS MySQL
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 automatski biti odbačene. 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.