Mysql 5.5 instalacja ze źródeł
Nie ma dla Debiana gotowej paczki z mysql 5.5, dlatego trzeba sobie skompilować, jak dawniej. Pobieramy ze strony http://dev.mysql.com/downloads/mysql/ aktualne źródło (Select Platform -> Source code).
Do kompilacji będą potrzebne:
apt-get install make cmake bison g++
Rozpakowujemy źródła:
tar xzf mysql-5.5.16.tar.gz
cd mysql-5.5.16
cmake .
make
make install (zainstaluje do /usr/local/mysql)
lub make install DESTDIR=”/dowolny/katalog”
make install scripts
Dodajemy użytkownika i grupę:
groupadd mysql
useradd -r -g mysql mysql
Zmieniamy właściciela
chown -R mysql.mysql /usr/local/mysql
Tworzymy tabele z uprawnieniami skryptem:
scripts/mysql_install_db –user=mysql
Uruchamiamy bazę poprzez:
/usr/local/mysql/bin/mysqld_safe
Standardowo my.cnf będzie czytany z katalogu /etc/mysql/my.cnf
Jeśli chcemy aby był używany inny plik/katalog uruchamiamy mysqla tak:
/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/mysql/my_ok_22.cnf
Tags: Instalacja, mysql
mysql – tworzenie bazy danych
CREATE DATABASE nazwa_bazy CHARACTER SET utf8 COLLATE utf8_general_ci;
Kilka instancji mysql na jednym serwerze
useradd mysql2
mkdir /var/run/mysqld2
chown mysql2.mysql2 /var/run/mysqld
do /etc/mysql/my.cnf należy dodać sekcję:
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = root
password = haslo
oraz sekcję [mysql] zmienić na [mysql1] oraz dodać kolejną [mysql2], itd.
W każdej sekcji należy ustawić:
[mysql2]
user = mysql2
pid-file = /var/run/mysqld2/mysqld.pid
socket = /var/run/mysqld2/mysqld.sock
port = 3307
basedir = /usr
datadir = /srv/db/mysql2
startujemy wybrane mysql, np.
/etc/init.d/mysql start 2
Error 2020: Got packet bigger than ‘max_allowed_packet’ bytes when dumping table
Podczas zrzutu bazy pojawia się error:
mysqldump -u user -phaslo baza >plik
mysqldump: Error 2020: Got packet bigger than ‘max_allowed_packet’ bytes when dumping table `lex_tresci` at row: 38566
Należy ustawić max_allowed_packet na wyższą wartość. Nie pomaga ustawienie w my.cnf. Należy dodać do wywołania mysqldumpa:
mysqldump –max_allowed_packet=512M -u user -phaslo baza >plik
Tags: max_allowed_packet, mysqldump
mysql – uprawnienia do bazy (grant)
Przyznanie uprawnień do bazy z poziomu administratora:
Z localhosta:
grant all privileges on nazwa_bazy.* to nazwa_usera@localhost identified by ‘haslo’;
Z konkretnego IP:
grant all privileges on nazwa_bazy.* to nazwa_usera@195.64.174.x identified by ‘haslo’;
Z dowolnego IP:
grant all privileges on nazwa_bazy.* to nazwa_usera@’%’ identified by ‘haslo’;
Tags: mysql grant
ERROR 1005 (HY000) at line 32: Can’t create table ‘./tabl/tabl_entry.frm’ (errno: 150)
Przy próbie odtworzenia bazy mysql z dumpa pojawia się taki błąd:
ERROR 1005 (HY000) at line 32: Can't create table './tabl/tabl_entry.frm' (errno: 150)
Tabela zawiera klucz do innej tabeli, która jeszcze nie istnieje:
CONSTRAINT `tabl_entry_FK_1` FOREIGN KEY (`author_id`) REFERENCES `tabl_user` (`id`),
Aby mysql nie sprawdzał tego należy na początku dumpa dodać:
SET FOREIGN_KEY_CHECKS = 0;
MySQL – obejście zapomnianego hasła root
1. Zatrzymanie mysqla
2. Uruchomienie serwera:
mysqld –skip-grant-tables
3. Połączenie do bazy mysql jako root bez hasła
4. Ustawienie hasła
update user set password=PASSWORD("NEWPASSWORD") where User='root';
5.Restart MySQLa.
MySQL: reset AutoIncrementu
ALTER TABLE tablica AUTO_INCREMENT=1111;
Polskie literki po imporcie
w /etc/mysql/my.ini:
[mysqld]
collation_server=utf8_unicode_ci
character_set_server=utf8
# To powoduje, że serwer wymusza kodowanie
#i nie trzeba w php stosować set names utf8 po każdym połączeniu.
skip-character-set-client-handshake
