Tos instrukcijos tinka, tik jos yra bendros visiem variantam ir reikia turėti minimalias operacinės sistemos žinias, kad galėtum kažką padaryt.

Plius tau niekada nebus aiškinama, kaip sukurti failą ir panašūs dalykai ;)

Ta instrukcija yra skirta atvejui, kai pamiršti slaptažodį. Tuo tarpu tu jau jį žinai, todėl kurti/redaguoti vartotojus gali standartine tvarka - per SQL užklausas.

Mysql vartotojų passwordai ir kita informacija saugoma 'mysql' duombazėje, 'user' lentelėje. Ten yra toks stulpelis 'Password'. Taigi su SQL užklausa gali jį pakeisti:

UPDATE user SET Password=PASSWORD('tavo_naujas_slaptazodis') WHERE User = 'root';

Aš spėjau pataisyti komandas, kur daviau ;) nes ten buvo vienas netikslumas. Nusikopijuok iš naujo.

Nu, nes tu jo net nesukūrei ;) Ir nori, kad kažkas veiktu ;)

Atlik tokias komandas ir parodyk rezultatą:

rm -rf /root/mysql-init

echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('slaptas');" > /root/mysql-init

/etc/init.d/mysql stop

mysqld_safe --init-file=/root/mysql-init &

/etc/init.d/mysql restart

rm -rf /root/mysql-init

mysql -pslaptas

p.s.: viską reikia atlikti būntant root'u

Pasitikrink ar faile /root/mysql-init yra teisinga informacija:

cat /root/mysql-init

O tu ivedei slaptažodį ar tik paspaudei ENTER kai jo buvo prašoma?

O kokį passwordą nurodei mysql-init faile?

Jeigu aklai perkopijavai eilutes tada tau reikėtu rašyti taip:

mysql -pMyNewPassword

Namu kataloge ;)

~ (tildė) linuxe reiškia namų katalogą.

root'o namų katalogas yra: /root
eilinio vartotojo: /home/vartotojas
ir pan.

Jeigu parašysi:

cd ~

tai pateksi į savo namų katalogą.

šiaip pagalvojau, kad pagal nutylėjimą passwordas turėjo būti tuščias. Todėl pagal idėja turėtu iš root accounto veikti:

mysql -p

Vietoje passwordo nieko neįvedinėti, o tik spausti ENTER.

Tai dabar pagal http://dev.mysql.com/doc/refman/4.1/en/ … sions.html atlik šiuos veiksmus:

2.
      Locate the .pid file that contains the server's process ID. The exact location and name of this file depend on your distribution, hostname, and configuration. Common locations are /var/lib/mysql/, /var/run/mysqld/, and /usr/local/mysql/data/. Generally, the filename has the extension of .pid and begins with either mysqld or your system's hostname.

      You can stop the MySQL server by sending a normal kill (not kill -9) to the mysqld process, using the pathname of the .pid file in the following command:

      shell> kill `cat /mysql-data-directory/host_name.pid`

      Note the use of backticks rather than forward quotes with the cat command; these cause the output of cat to be substituted into the kill command.

3.
      Create a text file and place the following command within it on a single line:

      SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

      Save the file with any name. For this example the file will be ~/mysql-init.

4.
      Restart the MySQL server with the special --init-file=~/mysql-init option:

      shell> mysqld_safe --init-file=~/mysql-init &

      The contents of the init-file are executed at server startup, changing the root password. After the server has started successfully you should delete ~/mysql-init.

5.
      You should be able to connect using the new password.

Ten kur daviau nuorodą, pats pirmas punktas yra toks, cituoju:

1. Log on to your system as either the Unix root user or as the same user that the mysqld server runs as.

Taip išeina tu net normaliai nepaskaitei, kas parašyta (-;

Pirmą, ką tu turi padaryti, tai prisijungti kaip administratorius:

su

Tada pabandyk jungtis prie mysql be jokių parametrų:

mysql

Jeigu nepavyks - parašyk kokį klaidos pranešimą gavai.

Yra neblogų mokomųjų pavyzdžių (tutorial), kaip pradėti dirbti su mysql'u: http://dev.mysql.com/doc/refman/4.1/en/tutorial.html

Atkreipk dėmesį į kabutes ;) Dokumentacijoje nurodyti backtik'ai (`) o tu komandoje naudoji paprastas viengubas kabutes (').

Tos komandos tikslas yra sustabdyti mysql serverį. Nesu naudojęsis UBUNTU bet didele tikimybė kad šį veiksmą gali atlikti kažkaip panašiai:

./etc/init.d/mysql_startup_script.sh stop

Dėl tikslaus scripto kelio/pavadinimo reikėtu žiūrėti UBUNTU dokumentacijoje ;)

Arba iš pradžių pasižiūrėk koks yra mysql serverio proceso_ID:

cat /var/run/mysqld/mysql.pid

arba

ps ax | grep mysql

Tada:

kill proceso_ID

La,

Idėja būtų tokia:

SELECT tickets.id,
   tickets.created_at
   changes.created_at
FROM tickets LEFT JOIN (
   SELECT ticket_changes.ticket_id,
      MAX(ticket_changes.created_at)
   FROM ticket_changes.ticket_changes
   GROUP BY ticket_changes.ticket_id
   ) changes ON tickets.id = changes.ticket_id
ORDER BY changes.created_at DESC

Dėl tikslesnio querio galėtum parodyt:

SHOW CREATE TABLE tickets;
SHOW CREATE TABLE ticket_changes;

Na jeigu diegiant mysql serverį tu niekur neįvedei slaptažodžio ir nieko apie jį nežinai vadinasi gali tekti jį pasikeisti.
Pradžiai pabandyk pasiskaityti visą operaciją dokumentacijoje: http://dev.mysql.com/doc/refman/4.1/en/ … sions.html
Jeigu kas bus neaišku tada klausk ;)

Patikslinimas: pas tave mysqld (mysql serveris jau paleistas). Tu nori tik su mysql klientine programa prisijungti prie mysql serverio ;)

Jeigu prie sistemos esi prisijungęs kaip root'as tai papildomai nurodyti vartotojo (-u root) nereikia.

Klaidos pranešimas, kuris tau rodomas, sako, kad reikalingas ir slaptažodis. Taigi bandyk (programa paprašys ivesti slaptažodį):

mysql -p

Jeigu prie sistemos esi prisijungęs kitu vartotoju tada (programa paprašys ivesti slaptažodį):

mysql -u root -p

Prisijungus prie mysql serverio reikės pasirinkti duomenų bazę. Pažiūrėti duomenų bazių sąrašą:

mysql> SHOW DATABASES;

Naudoti norimą duomenų bazę:

mysql> USE mysql;

Aišku, kad duomenų bazę nurodyti iš karto jungiantis prie serverio galima ir taip:

mysql -u root -p mysql

.. ir komandinėje eilutėje iš karto nurodyti ir slaptažodį:

mysql -u root -pslaptazodis mysql

Na klausimas labai nevykęs, nes niekas neaišku ko klausiama, nei kokie portai, nei kokio serviso, nei kokia operacinė sistema.
Galbūt galima tik spelioti, kad norima turėti galimybę jungtis prie mysql per tinklą. tokiu atveju reikėtu konfiguraciniame faile (priklausomai nuo operacinės sistemos: my.cnf arba my.ini) užkomentuoti eilutę "skip-networking".

La,

Na, kad galėtum atlikti tokią operaciją turi turėti įrašo įrašymo laiką - stulpelį DATETIME/TIMESTAMP formato, kurio reikšmė būtų funkcijos NOW() reikšmė įrašymo metu:

INSERT INTO lentele (laukas, data) VALUES ('belekas', NOW())

Turėdamas tokius duomenis gali išgauti paskutinių 7 dienų įrašus maždaug taip:

SELECT laukas FROM lentele WHERE WEEK(data) = (WEEK(CURRENT_DATE()) - 1)

Aišktu tai nėra gal pats efektyviausias būdas.

Puikumėlis ;)

Gal galima patikslinti:

- kokia duomenų bazių valdymo sistema (jei mysql'as kokia versija)?
- kiek ir kokio sudėtingumo užklausų?
- kiek laiko skiriama darbams?
- kaip įvertinamas ar darbas pasisekė ar ne?
- apytiksliai įkainiai?

3,838

(1 replies, posted in Visa kita)

La,

Stored procedūros duomenų bazių valdymo sistemose veikia panašiai kaip ir procedūros/funkcijos žinomose programavimo kalbose. Jos idomios tuo, kad laikomos duomenų bazėje. Dažniausiai stored procedūrose aprašomi veiksmai su duomenų bazėmis, kurių nėra reikalo kelti į programas. Tarkim trigeris galima sakyti irgi yra stored procedūra, tik su praplėstu funkcionalumu - iškviečiamas automatiškai prie tam tikrų aplinkybių. į stored procedūra gali rašyti krūvą SQL užklausų - kitaip sakant atlikti tam tikrus veiksmus. šiaip yra ir privalumų ir minusų.

Minusai:
- nėra vieningo stored procedūrų standarto, kas apsunkina migracijas iš vienos DBVS į kitą;
- SQL'as ganėtinai atsilieka savo funkcionalumu nuo aukšto lygio programavimo kalbų, todėl kartais sunku atlikti norimus veiksmus;

Pliusai:
- didžiąją dali kodo susijusio su duomenų valdymu galima perkelti tiesiai į DBVS taip aiškiau atskiriant programos lygius/sluoksnius (tarkim naudojant įvairius programavimo šablonus);
- palengvina užduotį kai reikia migruoti iš vienos programavimo kalbos į kitą paliekant tą pačia duomenų bazę;
- atliekant manipuliacijas su duomenimis stored procedūroje duomenys nėra perduodami į aplikaciją - tik rezultatai;

ir pan. ;)

Daugiau visokios informacijos galima rasti:
http://en.wikipedia.org/wiki/Stored_procedure
http://dev.mysql.com/doc/refman/5.0/en/ … n-faq.html
http://dev.mysql.com/doc/refman/5.0/en/ … edure.html

Yra pakankamai medžiagos apie indeksus ir jų panaudojimą:

http://dev.mysql.com/doc/refman/4.1/en/ … dexes.html
http://dev.mysql.com/doc/refman/4.1/en/indexes.html
http://dev.mysql.com/doc/refman/4.1/en/ … index.html

Galima sakyti, kad paieškai. Tarkim kai naudoji WHERE salygą ir yra sudarytas indeksas, tai paieška atliekama tame indekse, o ne pačiuose duomenyse. Indekso struktūra yra specialiai pritaikyta tam, kad joje būtų galima greitai atlikti paiešką (tarkim binarinio medžio struktūra). Tas indeksas yra saugomas atskirame faile ir mysql'as jį naudoja tada, kai mano, kad reikia. Tau nereikia juo rūpintis. Tau reikia tik žinoti, kada tuos indeksus sukurti.