Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Različite Konekcije za Različite Baze u MySQL-u

[es] :: MySQL :: Različite Konekcije za Različite Baze u MySQL-u

[ Pregleda: 1201 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Inspector
Beograd

Član broj: 30536
Poruke: 49
46.240.188.*



Profil

icon Različite Konekcije za Različite Baze u MySQL-u15.01.2023. u 22:55 - pre 15 meseci
Pozdrav Svima,

Prošao sam dosta nekih basic free online kurseva za MySQL čisto da budem upoznat sa temom jer planiram da ga koristim za neke osnovne stvari.

Generalno mi je sve logično što se osnovnih kodova za rad tiče ali ono što nikako ne mogu da razumem su MySQL Workbench Konekcije. Dakle ideja koju imam je da kada napravim novu konekciju ona startuje od nule i blanko projekta nove baze sa kojom bi bila povezana a ne da povlači staru bazu u kojoj sam već radio na prethodno napravljenoj default konekciji. Da bi vam bilo malo jasnije evo i slike:

https://prnt.sc/VRLkkJWFxcir

U ovom slučaju napravio sam test konekciju "Disperzija" na koju kada kliknem ona zapravo vuče podatke iz iste baze kao i ova default "Konekcija" što mi je negde i logično jer su Host i Port isti na oba. Probah i to da čačkam pa mi je izbacivalo greške. Znam da su početnička pitanja ali mene zanima sledeće:

- Kako napraviti novu blanko bazu nazavisnu od one prethodne koja je tu već po default-u (nešto kao novi projekat)
- Kako tu istu novu konekciju spojiti sa novom blanko bazom ili još bolje kako da prilikom pravljenja nove konekcije odmah označim da se ona pokreće kao nova blanko baza?

Skraćeno: Konekcija 1 da ostane povezana sa Bazom 1, Konekcija 2 da bude povezana sa novom blanko Bazom 2.

Hvala unapred na odgovoru

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u16.01.2023. u 03:22 - pre 15 meseci
uh, malo si izmesao termine ...

moras da napravis razliku izmedju baze i database servera


baza (database) ili sema (schema) je skup tabela, trigera, stored procedura... u kojoj cuvas podatke

database server je skup vise baza (ili skup vise sema)

mysql ti dozvoljava da radis upite izmedju baza

ta "konekcija" koju vidis u workbench-u je konekcija izmedju klijenta (workbench-a) i database servera.

u toj konekciji imas da podesis "default schema" - to je koju ces bazu koristiti po defaultu (ako ne navedes nista) kada se okacis na server tako da ti na database serveru mozes da kreiras vise baza (create database perica; create database zikica; create database milica;) a onda u default schema od konekcije mozes da upises jednu od tih baza. tako ako napravis vise konekcija svaka ce SQL koji pises izvrsavati na jednoj od tih baza ako ne pises explicitno u SQL-u koju bazu hoces da koristis ili ako ne kliknes tamo u drvetu na drugu bazu (posto kada se okacis na server bez obzira koja ti je "default schema" ti vidis i sve ostale kojima imas privilegiju da pristupis)


kao klijent ti mozes da uradis

Code:

create database db1;
create database db2;
create database db3;

use db1; -- sada mi je DEFAULT schema db1
create table t1 (a int primary key not null, b int); -- napravio si tabelu t1 u bazi db1 zato sto ti je default baza db1
create table db2.t1 (a int primary key not null, b int); -- napravio si tabelu t1 u bazi db2 jer si explicitno naveo ime baze
insert into t1 values (1,1); -- dodao si slog 1,1 u bazu db1 tabelu t1
insert into db2.t1 values (2,2); -- dodao si slog 2,2 u bazu db2 tabelu t1
select * from t1; -- vraca 1,1 jer trazis sta ima u default bazi a db1 je default baza u tabeli t1
use db2; -- sada setujes da ti je default baza db2
select * from t1; -- vraca 2,2 jer trazis sta ima u tabeli t1 ali sad ti je default baza db2
select * from db1.t1; -- vraca 1,1 jer si sada explicitno rekao da hoces tabelu t1 iz baze db1 a ne iz default baze koja je sada db2
...


jasnije ?

 
Odgovor na temu

S A J A
Beograd

Član broj: 226539
Poruke: 1907
*.static.sbb.rs.



+421 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u16.01.2023. u 10:11 - pre 15 meseci
Treba da imaš jednu konekciju a unutra više baza.

Problem sa tim menadžerima je što kod kreiranja konekcije traže da se unese i (default) baza. Verovatno te to buni. Ja to nikad ne popunim i onda se samo konektujem na server i posle uđem u bazu koju želim.

 
Odgovor na temu

Inspector
Beograd

Član broj: 30536
Poruke: 49
46.240.188.*



Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u16.01.2023. u 14:13 - pre 15 meseci
Citat:
bogdan.kecman:
uh, malo si izmesao termine ...

moras da napravis razliku izmedju baze i database servera


baza (database) ili sema (schema) je skup tabela, trigera, stored procedura... u kojoj cuvas podatke

database server je skup vise baza (ili skup vise sema)

mysql ti dozvoljava da radis upite izmedju baza

ta "konekcija" koju vidis u workbench-u je konekcija izmedju klijenta (workbench-a) i database servera.

u toj konekciji imas da podesis "default schema" - to je koju ces bazu koristiti po defaultu (ako ne navedes nista) kada se okacis na server tako da ti na database serveru mozes da kreiras vise baza (create database perica; create database zikica; create database milica;) a onda u default schema od konekcije mozes da upises jednu od tih baza. tako ako napravis vise konekcija svaka ce SQL koji pises izvrsavati na jednoj od tih baza ako ne pises explicitno u SQL-u koju bazu hoces da koristis ili ako ne kliknes tamo u drvetu na drugu bazu (posto kada se okacis na server bez obzira koja ti je "default schema" ti vidis i sve ostale kojima imas privilegiju da pristupis)


kao klijent ti mozes da uradis

Code:

create database db1;
create database db2;
create database db3;

use db1; -- sada mi je DEFAULT schema db1
create table t1 (a int primary key not null, b int); -- napravio si tabelu t1 u bazi db1 zato sto ti je default baza db1
create table db2.t1 (a int primary key not null, b int); -- napravio si tabelu t1 u bazi db2 jer si explicitno naveo ime baze
insert into t1 values (1,1); -- dodao si slog 1,1 u bazu db1 tabelu t1
insert into db2.t1 values (2,2); -- dodao si slog 2,2 u bazu db2 tabelu t1
select * from t1; -- vraca 1,1 jer trazis sta ima u default bazi a db1 je default baza u tabeli t1
use db2; -- sada setujes da ti je default baza db2
select * from t1; -- vraca 2,2 jer trazis sta ima u tabeli t1 ali sad ti je default baza db2
select * from db1.t1; -- vraca 1,1 jer si sada explicitno rekao da hoces tabelu t1 iz baze db1 a ne iz default baze koja je sada db2
...


jasnije ?


Komande ispod znam i razumem, zapravo iste kodove i koristim u radu sa schemama/tabelama nakon konkecije i to je sve jasno. U suštini kada sam napisao za Database mislio sam na Database Server po ovome što si opisao.

Da bi još više pojednostavio stvari pitanje je sledeće. Da li postoji ikakva šansa da kada napravim novu konekciju tu istu konekciju povežem sa drugim Databse Servervom tj. nekim drugim ili novim skupom Schema?

Ideja je prosta:

- Konekcija 1 bi me vodila do jednog skupa Schema (ili Database Servera ako se tako zove) gde bi recimo imao Scheme: Korisnik, Plaćanja, Status itd zajedno sa njihovim tabelama.
- Konekcija 2 bi me vodila do drugog skupa Schema (ili Database Servera ako se tako zove) gde bi recimo imao Scheme: Uvoznik, Logistika, Nabavka itd zajedno sa njihovim tabelama.

Dve odvojene konekcije, dva odvojena skupa Schema koja nemaju veze jedno sa drugim kao recimo što mogu da usnimim dva odvojena projekta u nekim drugim programima.

Izvinjenje na površnim pitanjima ali pokušavam da shvatim logiku kako to radi u MySQL-u ili je nemoguće imati različite konekcije koje vode do drugih Schema pa se sve radi iz Schema u jednoj konekciji što mi je malo nelogično.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u17.01.2023. u 04:09 - pre 15 meseci
Citat:
Inspector: U suštini kada sam napisao za Database mislio sam na Database Server po ovome što si opisao.


ne mozes da imas 2 database servera na istoj IP adresi sa istim portom.

Citat:
Inspector:
Da li postoji ikakva šansa da kada napravim novu konekciju tu istu konekciju povežem sa drugim Databse Servervom tj. nekim drugim ili novim skupom Schema?


kliknes na PLUS tamo da napravis novu konekciju i uneses IP, PORT, USERNAME i PASSWORD za novi db server

Citat:
Inspector:
Ideja je prosta:

- Konekcija 1 bi me vodila do jednog skupa Schema (ili Database Servera ako se tako zove) gde bi recimo imao Scheme: Korisnik, Plaćanja, Status itd zajedno sa njihovim tabelama.
- Konekcija 2 bi me vodila do drugog skupa Schema (ili Database Servera ako se tako zove) gde bi recimo imao Scheme: Uvoznik, Logistika, Nabavka itd zajedno sa njihovim tabelama.

Dve odvojene konekcije, dva odvojena skupa Schema koja nemaju veze jedno sa drugim kao recimo što mogu da usnimim dva odvojena projekta u nekim drugim programima.


nema tu nista prosto, koliko ja vidim i dalje mesas stvari, probaj da napises sta TACNO hoces, gde se fizicki sta nalazi i sta je cilj te vezbe (posto ako su logistika i placanje deo iste aplikacije ovo sto pises nema nikakvog smisla)

"korisnik", "placanje", "status" "itd" - zvuci kao tabele ne kao scheme/baze

aj ovako, da pojednostavimo, u 80% slucajeva

1 aplikacija se kaci SAMO NA JEDAN DB SERVER i koristi na tom jednom db server 1 BAZU/SCHEMU u kojoj se nalazi brdo tabela. U ovom slucaju "jedan db server" moze fizicki da bude na vise masina, da ne pricamo sada o skaliranju, da pojednostavimo)

1 DB server moze da ima VISE SCHEMA (BAZA) te servira vise aplikacija (npr na jednom database serveru imas bazu za wordpress za sajt pera, imas bazu drugu za wordpress za sajt mika, imas bazu za knjigovodstvo za firmu zika doo, imas bazu za aplikaciju kuvarica ... svaka ta baza ima svoje tabele, trigere, stored procedure i svaku tu bazu konaktira razliciti korisnik sa razlicitim user/pass za razlicitu aplikaciju)

sve varijante gde se jedna aplikacija kaci na vise DB servera su specijalni slucaj koji tebe ne interesuje (ako treba da pitas - ne zanima te, kada ti bude trebalo neces imati potrebe da pitas)


Citat:
Inspector:
Izvinjenje na površnim pitanjima ali pokušavam da shvatim logiku kako to radi u MySQL-u


radi potpuno identicno kao i SVI drugi RDBMS (relational database management system), kao m$SQL, kao oracle db, kao IBM DB2, kao postgresql, kao sybase ... apsolutno identicno, stim da neki od njih ne dozvoljavaju upit iz non-default baze a neki dozvoljavaju


Citat:
Inspector:
ili je nemoguće imati različite konekcije koje vode do drugih Schema pa se sve radi iz Schema u jednoj konekciji što mi je malo nelogično.



konekcija ka database serveru absolutno nema nikakve veze sa time o cemu ti pricas

konekcija ka database serveru te "zakaci" na database server, database server ti na dalje daje pristup onome sto user/host/pass kombo kojim si se zakacio ima privilegiju da vidi/radi. neke SQL komande imaju "neobavezne" delove koji kada nisu navedeni koriste se "default" vrednosti, stim da ni na jednom RDBMS ukljucujuci MySQL nemaju sve default varijable vrednosti u slucaju da nisu definisane tako da kada uspostavis konekciju npr default database/schema nije setovana tako da ako uspostavis konekciju i probas da uradis "select * from t1;" dobices gresku jer RDBMS nema ideju iz koje baze/scheme hoces t1, te ili moras da explicitno kazes iz koje baze hoces t1, dakle "select * from db1.t1;" ili moras da setujes default database "use db1; select * from t1;". Ovde se RDBMS-i medjusobno razlikuju u sintaksi, na MySQL-u koristis "USE DB1;" na nekom drugom ces uraditi "CONNECT DB1" etc etc... sintaksa nebitna poenta je da moras da postavis default database. Sam konektor za MySQL ti daje mogucnost da setujes razne default parametre (character set, timeoute, da li prepared statemente radis na serveru ili na klijentu etc etc ... ) i izmedju ostalog i default database tako da ako prilikom konekcije setujes default database nemoras rucno ti da radis USE db1 kada se konekcija uspostavi, ali "default database" je dinamicka session varijabla tako da ti mozes u bilo kom trenutku da promenis default database sa "USE db2"


 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u17.01.2023. u 08:25 - pre 15 meseci
Citat:
radi potpuno identicno kao i SVI drugi RDBMS (relational database management system), kao m$SQL, kao oracle db, kao IBM DB2, kao postgresql, kao sybase ... apsolutno identicno, stim da neki od njih ne dozvoljavaju upit iz non-default baze a neki dozvoljavaju


U stvari, problem sa MySQL je što NE RADI isto kao sve druge baze nego drugačije. što je razlog za mnoga nerazumevanja,
Jedino je u MySQL bazi schema sinonim za database.

U svim ostalim RDBMS, schema je skup objekata (tabela, trigera, stored procedura) koje pripadaju jednom useru (user i schema su sinonimi),
U MSSQL posoji database koja je, u stvari, neka vrsta namespace.
U Oracle bazi ne postoji takav koncept, ali postoje pluggable database, koje su po svojoj logici potpuno izdvojene baze podataka (kao da jedna instanca Oracle simulira više odvojenih instanci). Na Oracle, pluggable baze koje su na istom serveru su servisi, koji mogu čak i da slušaju na različitim portovima (ali ne moraju), a sa stanovišta korisnika ponašaju se kao potpuno odvojene baze, samo DBA koji ima pristup na CDB može da vidi sve kontejnere u kojima su PDB (pluggable databases).

Da bi se "video" objekat na ovim bazama, sintaksa je
MySQL: DATABSE_OR_SHEMA.OBJECT_NAME
MSSQL: DATABASE.SCHEMA.OBJECT_NAME
Oracle: SCHEMA.OBJECT_NAME

[Ovu poruku je menjao djoka_l dana 17.01.2023. u 09:38 GMT+1]
 
Odgovor na temu

S A J A
Beograd

Član broj: 226539
Poruke: 1907
*.static.sbb.rs.



+421 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u17.01.2023. u 09:21 - pre 15 meseci
Konekcija u Workbench-u mogu da budu dve stvari:

1. Samo konekcija na server. Povežemo se na server i onda tamo vidimo spisak baza i ulazimo u koja nam treba. To se radi preko taba Navigator pa Schemas. Ovo je po meni i logičan način upotrebe, prvo se povežeš na server a onda unutra pristupaš bazama (iliti šemama kako oni nazivaju). Da bi to tako radilo, samo je bitno da se kod pravljenja konekcije ne navede baza (schema).

2. Konekcija direktno na bazu. Kad se pravi konekcija, pored podataka za server se upiše i ime baze (schema) pa kad se klikne na konekciju, odma se poveže na željenu bazu. Može i tako da se radi. Sve zavisi kako je kome lakše.

Ja praktikujem prvi način, povežem se na server (dakle jedna konekcija) pa onda unutra vidim baze. To je praktičnije ako imate više servera. Onda svaka konekcija bude jedan server, a unutra stoje baze. Ovako kad bi otvarao posebne konekcije za svaku bazu, bilo bi haotično.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u17.01.2023. u 10:58 - pre 15 meseci
@saja, ali i kada setujes default bazu u konekciji za WB mozes da promenis tokom rada na koju si bazu zakacen
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Različite Konekcije za Različite Baze u MySQL-u17.01.2023. u 11:41 - pre 15 meseci
Citat:
djoka_l:
U stvari, problem sa MySQL je što NE RADI isto kao sve druge baze nego drugačije. što je razlog za mnoga nerazumevanja,
Jedino je u MySQL bazi schema sinonim za database.


pa ne bas :D .. m$SQL i sybase imaju schemu kao layer ispod baze ali ako gledamo ono odma ispod database servera (o cemu sam pricao da su isti) su isti, ispod database servera je baza ... e sad dalje postoje razlike svakako, neki "bolji" ce imati ispod database ceo layer ili polulayer sa semom ili rolama a neki nece vec ce imati bazu i schemu kao jednu celinu ... sve dalje od toga je suvise daleko od problema o kom se diskutuje ..

m$sql ne podrzava da jedna tabela bude u dve scheme jer je kod njega nasledjeno od sybase-a da je schema poseban odvojen layer pa onda mozes samo sinonim da napravis u drugoj semi ako hoces da imaju isti objekat tako da je na m$sql, sybase i jos nekim schema tako da tu imas bukvalno 2 nivoa fizickog razdvajanja dok na mysql i nmogim drugima su ta dva nivoa spojena jer se u ogromnom broju slucajeva jedan od ta dva layer-a ne koristi - kod mysql-a je to iz istoriskih razloga, sa FRM fajlovima i MyISAM tabelama nije realno bilo potrebe za schemama jer nit su postojali fk ni trigeri ni ... onda posle kada je ACID za datu uspostavljen sa InnoDB/Falcon/... sam rdbms nije bio transakcion jer - FRM fajlovi... tek sa 8.0 mysql bi mogao potpuno da podrzi database/schema distinkciju (sada su i DDL transakcioni, nema vise frm fajlova.. najzad rename moze da radi kako treba..) ali posle vise decenija prosto nema potrebe za tom dodatnom distinkcijom

terminologija jeste all over the place, katalog, sema, baza... no realno top level je svuda isti, mysql samo neme sve one levele ispod :)
 
Odgovor na temu

[es] :: MySQL :: Različite Konekcije za Različite Baze u MySQL-u

[ Pregleda: 1201 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.