Մենք կարող ենք հեշտությամբ սպանել որոշակի օգտագործողի բոլոր mysql հարցումները `էլեգանտ մեկի միջոցով:

select concat('KILL ',id,';') from information_schema.processlist where user='user123';

Մենք user123- ը փոխարինում ենք մեր ուզած օգտագործողին և գործարկում ենք mysql- ով, և ամեն ինչ կարգին է

Մենք անցյալ շաբաթ գնեցինք Fantastico Deluxe տեղադրիչը, ինչը իմ խոնարհ կարծիքով CPanel սերվերների համար առավել պարկեշտներից մեկն է. Մենք տեղադրեցինք այն, փորձարկեցինք այն և ամեն ինչ ընթացավ հարթ. Այսօր հաճախորդը զեկուցեց WordPress տեղադրման կոդավորման հետ կապված խնդրի հետ. Ես վերանայեցի իրերը և միանգամից լույս սփռեցի խնդրի վրա, տվյալների բազան կոդավորվեց լռելյայն Latin1- ի փոխարեն, UTF8- ի փոխարեն, ինչպես և ենթադրվում էր. Դա նույնիսկ ավելի զվարճալի է, որ phpmyadmin- ում գրված է, որ UTF8- ն օգտագործվում է լռելյայն, դրամա. Ես որոշեցի զննել Fantastico ֆայլերը ՝ տեսնելու, թե արդյոք ինչ-որ տեղ կա, որտեղ ես առաջին հայացքից կարող եմ տրամադրել տվյալների բազաների ստանդարտ կարգավորումներ, ես ոչինչ չեմ տեսել. Այնուհետև ինչ-որ բան շտապեց ինձ տեսնել, թե ինչ կա my.conf- ում և ինչ տեսնել, որ կազմաձևում համապատասխան կարգավորումներ չկային, և ամեն ինչ լույս է տեսնում դեպի այն, ինչ սահմանված է լռելյայն. Mysql սերվերը կոդային ծածկագիր է UTF8 օգտագործելու համար, եթե այն կազմաձևված չէ այլ պարամետրերով, և Fantastico- ն ակնհայտորեն լատինական1-ով է: ( ինչը բավականին հիմար որոշում է). Լուծումը, ինչպես միշտ, չնչին է 2 կարգը գ [խորհրդավոր] UTF8- ը լռելյայն կոդավորումը դնելու համար, և ամեն ինչ ընկնում է քնելու մեջ

նիշերի հավաքածու-սերվեր = utf8
collation-server = utf8_general_ci

Ես գաղափար չունեմ, թե ինչու եմ կարոտել այս պարամետրերը, հաշվի առնելով, որ ես խաղում էի մի քանիսը կատարելու համար “տուգանք” mysql պարամետրերը.

Ընդլայնեց Զեմանտան

Դա դուրս եկավ մի քանի օր առաջ XAMPP 1.8.0 երեկ տարբերակից թարմացնելուց հետո 1.7.7 Ես բավականին հետաքրքիր խնդիր ունեի. Phpmyadmin- ը չբացվեց դեպի ինձ և պայթեց 403

Մուտքն արգելված է!


XAMPP անվտանգության նոր հայեցակարգ:

Հայցվող օբյեկտին հասանելիությունը հասանելի է միայն տեղական ցանցից.

Այս պարամետրը կարող է կազմաձևվել ֆայլում “httpd-xampp.conf”.

Веднага отворих httpd-xampp.conf който при мен се намира в /opt/lampp/etc/extra/, на пръв поглед всичко изглеждаше наред. Правилата за локалната мрежа бяха наред. Отделно че отварях от localhost. WTF ??? Погледнах log-а гледам че достъпа ми е отрязан от конфигуацията. Тука вече нещата ме ахнаха и честно казано донякъде малко на късмет открих проблема. След като преглеждах httpd.conf-а видях в Allow/Deny клаузите един последен ред Require all granted. О да еврика. Това е новия контролен механизъм който влезе в apache 2.4.x. Այն հնարավորություն է տալիս մուտք գործել կամ հերքում է մուտքը դեպի բոլոր պահանջվողները, այն հիմնականում ընդօրինակում է Թույլատրել / մերժել գործառույթը :). За да поправим проблема добавяме Require all granted в директивите за папката /opt/lampp/phpmyadmin. Փոփոխություններից հետո ինձ թվում է

<Տեղեկատու “/opt / լամպ / phpmyadmin”>
AllowOverride AuthConfig Limit- ը
Պատվերը թույլ է տալիս,հերքել
Թույլ տալ բոլորից
Require all granted
</Տեղեկատու>

 

Viangi- ն կարող է փորձել այլ վայրագություններ, օրինակ ՝ phpmyadmin պանակը վերափոխել այլ բանի և այլընտրանք դարձնել ոչ. Բայց դա ավելի տգեղ է և ոչ այնքան իմաստալից 🙂

p.s Ինձ հարցրեցին, թե ինչու եմ ես օգտագործում XAMPP և ոչ բոլոր բաղադրիչների մաքուր տեղադրումը, քանի որ իմ Debian- ը նրանց ծնեց – պատասխանը շատ պարզ է – ԼԱԶԻՆԵՍ. Ես շատ ծույլ եմ մի քանի հրամաններ գրել, ապա դիպչել իմ խոստովանությանը և այլն. Շատ ավելի հեշտ է ներբեռնել ամբողջ փաթեթը, unzip and burn 😉

Ընդլայնեց Զեմանտան

Image representing MySQL as depicted in CrunchBase

Որոշ ժամանակ առաջ ես գրել էի այդ մասին MySQL- ի ամբողջական տեքստի որոնում 🙂 Այսօր ես մի խնդրանքով շատ հետաքրքիր փորձ ունեցա. Ընդհանուր առմամբ, հարցումը փնտրում է արդյունքներ, որոնք բացակայում են մեկ այլ աղյուսակից. Հարցման WHERE մասում մեկ հիմնական ընտրություն և մեկ ենթաընտրություն. Ընդհանրապես, կմախքը է

SELECT DISTINCT (
`field`
)
FROM `table1`
WHERE `someID` =44
AND `firsTextField` NOT
IN (

SELECT DISTINCT (
`secondTextField`
)
FROM `table2`
WHERE `otherID` =44
)

Ըստ էության, պարզ հարցում է. Ես գրել եմ դրա համար 30 վրկ Ես վարում եմ այն ​​և մեքենայի օղակները. Երկար և համբերատար սպասելուց հետո, կամ ավելի ճիշտ `43 ~ վրկ . Ես փչում եմ արդյունքի լոլին . Pffff խելագարություն. Մտնում եմ մեքենա, երբ պրոցեսորը դիտում եմ, սովորաբար բեռնված է գրեթե պարապ վիճակում. Ockնցում և սարսափ. Հարցումը կրկին վարում եմ նույն արդյունքը. Fuck WTF. Ես վկայում եմ հարցումը և ամեն ինչ փայլում է – երկրորդ դաշտը secondTextField- ը միայն տեքստի ամբողջական որոնում առանց ինդեքսի, և այնտեղ սալը համեստ է մոտ 35k տողից. Ո՞վ կարդալ – տեքստի ամբողջական որոնումը ինդեքս չէ. Խնդիրը արագորեն պարզվում է

ALTER TABLE `links` ADD INDEX ( `linkUrlID` ) 

Եվ իրերն ընկան այն տեղում, երբ Query- ն ստացավ 0.0005 վրկ

Զգույշ եղեք, թե ինչպես եք դրանցից ինդեքսները տեղադրում, հարցման արագությունը կախված է ձեզնից.

p.s Ընդհանուր առմամբ, ես մեղավոր եմ վերը նշված իրավիճակի համար ոչ միայն այն պատճառով, որ այն չունի ինդեքս, այլ նաև այն պատճառով, որ այն չի օգտագործում տեքստի որոնման ամբողջական մեթոդը 😀

Ընդլայնեց Զեմանտան

Вчера след обновяване на версията на mysql, server-ът ми започна да ми крещи, че има табличка, която не е била затворена чисто и има нужда от поправка и прочие. Блах, коя ще е тая таблица, все пак са ми около 30-тина на тоя сървър. Единият вариант е да видите в log-овете какво пише по въпроса и да пуснете поправка на съответната таблица или другият вариантдалеч по-добрияте да пуснете поправка, проверка и оптимизиране на всички таблици. За тази цел ще използвам mysqlcheck инструмента. Общо взето вариантите в случая са като и двете коменди са синонимни една на друга:

mysqlcheck -Aor -u root -p

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases

Общо взето, която и от двете команди да използвате, ефектът ще е еднакъвароматична поправка, проверка и оптимизация на всички таблици. След като напишете която и да е от двете команди, ще бъдете попитани за root паролата на mysql server-a ви.