Taisomas MySQL

Jump to navigation Jump to search

Dėmesio: Jūs nesate prisijungęs. Jūsų IP adresas bus viešai matomas, jei atliksite kokius nors keitimus. Jeigu prisijungsite arba sukursite paskyrą, jūsų keitimai bus priskirti jūsų naudotojo vardui; drauge įgysite naujų galimybių.

Keitimas gali būti atšauktas. Prašome patikrinti palyginimą, esantį žemiau, kad patvirtintumėte, kad jūs tai ir norite padaryti, ir tada išsaugokite pakeitimus, esančius žemiau, kad užbaigtumėte keitimo atšaukimą.

Dabartinė versija Jūsų tekstas
6 eilutė: 6 eilutė:
  
 
  <nowiki>UPDATE mysql.user SET plugin = '' WHERE plugin = 'unix_socket';</nowiki> flush privileges;
 
  <nowiki>UPDATE mysql.user SET plugin = '' WHERE plugin = 'unix_socket';</nowiki> flush privileges;
 
=== MySQL 5.7.37 ar vėlesnė ===
 
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
 
FLUSH PRIVILEGES;
 
  
 
=== MySQL 5.7.6 ar vėlesnė ===
 
=== MySQL 5.7.6 ar vėlesnė ===
16 eilutė: 11 eilutė:
 
=== MySQL 5.7.5 ar ankstesnė===
 
=== MySQL 5.7.5 ar ankstesnė===
 
  SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NaujasSlapt');
 
  SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NaujasSlapt');
=== MySQL 5.5.60 ir ankstesnė ===
+
 
UPDATE mysql.user SET password=PASSWORD('password') WHERE user ='root';
 
  
 
Tuomet uždarome esamą MySQL daemono procesą
 
Tuomet uždarome esamą MySQL daemono procesą
189 eilutė: 183 eilutė:
 
Restartuojam mysql, susitvarko. P.S jeigu mysql po upgreido dar reiktų išjungus šį parametą ir švariai paleidus mysql paleisti
 
Restartuojam mysql, susitvarko. P.S jeigu mysql po upgreido dar reiktų išjungus šį parametą ir švariai paleidus mysql paleisti
 
  mysql_upgrade
 
  mysql_upgrade
 
 
=== Kurios lentelės naudoja InnoDB engine ? ===
 
=== Kurios lentelės naudoja InnoDB engine ? ===
  
 
  SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'innodb';
 
  SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'innodb';
 
== [ERROR] Can't init tc log ==
 
 
=== Sprendimas ===
 
Įdedam į my.cnf konfigą
 
[mysqld]
 
log_bin=ON
 
  
 
== mariadb.service failed because a timeout was exceeded. ==
 
== mariadb.service failed because a timeout was exceeded. ==
244 eilutė: 230 eilutė:
 
Nutolusiame serveryje turime labai didelę duomenų bazę su šimtais tūkstančių lentelių ir milijonais įrašų, serveris tuoj bus išjungtas, reikia kuo greičiau pasidaryti atsarginę duomenų kopiją ir perkelti ją šifruotu kanalu į lokalų serverį kuriame mažai vietos. Naudosime mysqldump ir pipe režimą, spausime duomenis ir viską atsiųsime per ssh:
 
Nutolusiame serveryje turime labai didelę duomenų bazę su šimtais tūkstančių lentelių ir milijonais įrašų, serveris tuoj bus išjungtas, reikia kuo greičiau pasidaryti atsarginę duomenų kopiją ir perkelti ją šifruotu kanalu į lokalų serverį kuriame mažai vietos. Naudosime mysqldump ir pipe režimą, spausime duomenis ir viską atsiųsime per ssh:
 
  ssh -C root@remote_serveris "mysqldump --single-transaction --opt --compress DUOMBAZĖ | gzip -9 -c" > DUOMBAZĖ.sql.gz
 
  ssh -C root@remote_serveris "mysqldump --single-transaction --opt --compress DUOMBAZĖ | gzip -9 -c" > DUOMBAZĖ.sql.gz
== Sudėtingos struktūros greitas importas ==
 
service mysql restart --innodb-doublewrite=0
 
mysql --init-command="SET SESSION FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS=0;" -u root -p < Backup_Database.mysql
 
== Lentelės atskyrimas ==
 
cat your-dump.gz.sql | sed -n -e '/DROP TABLE.*`TABLE_NAME`/,/UNLOCK TABLES/p' > table_name-dump.sql
 
 
= InnoDB Lentelės pašalinimas rankiniu būdu =
 
# rm /var/lib/mysql/<database>/<table_name>.ibd
 
# mysql
 
MySQL > SET FOREIGN_KEY_CHECKS=0;
 
MySQL > ALTER TABLE tableName DISCARD TABLESPACE;
 
MySQL > DROP TABLE tableName;
 
= Pašalintos InnoDB lentelės failų metadata dropinimas =
 
Atvejis kai pašalinote InnoDB lentelės failus .ibd ir .frm, ir negalite pašalinti pačios lentelės iš MySQL su klaidos kodu "Unknown table" arba "exists. Please DISCARD the tablespace before IMPORT.". Tuomet reikia sukurti dumb lentelę su fake struktūra, perkopijuoti jos .frm failą į reikiamos lentelės pavadinimą ir tuomet trinti.
 
MySQL > create table  innodb_table2(`id` int(10) unsigned NOT NULL);
 
# /etc/init.d/mysql stop
 
# cp -a /var/lib/mysql/<database>/innodb_table2.frm /var/lib/mysql/<database>/<table_name>.frm
 
# /etc/init.d/mysql start
 
MySQL > SET FOREIGN_KEY_CHECKS=0;
 
MySQL > drop table <table_name>
 
  
 
= Optimizacijos =
 
= Optimizacijos =

Primename, kad viskas, kas patenka į Žinynas, yra skelbiama pagal GNU Free Documentation License 1.2 (plačiau – Žinynas:Autorinės teisės). Jei nenorite, kad jūsų indėlis būtų be gailesčio kaitaliojamas ir platinamas, nerašykite čia.
Jūs taip pat pasižadate, kad tai jūsų pačių rašytas turinys arba kopijuotas iš viešų ar panašių nemokamų šaltinių. Nekopijuokite autorinėmis teisėmis apsaugotų darbų be leidimo!

Kad apsaugotume vikį nuo automatinio keitimų šlamšto, prašome išspręsti šį CAPTCHA:

Atšaukti Kaip redaguoti (atsidaro naujame lange)

Šablonai, naudojami puslapyje: