ssh -N -L 3307:127.0.0.1:3306 <username>@<ssh-server-ip>
로컬 연결만 가능하도록 127.0.0.1 로 binding 된 MySQL 서버에 원격에서 접속하고 싶을 때, 해당 서버에 ssh 권한이 있다면 위의 명령을 통해 ssh 터널을 구성한 후 원격에서 3307로 접속하면 된다.
ssh -N -L 3307:127.0.0.1:3306 <username>@<ssh-server-ip>
로컬 연결만 가능하도록 127.0.0.1 로 binding 된 MySQL 서버에 원격에서 접속하고 싶을 때, 해당 서버에 ssh 권한이 있다면 위의 명령을 통해 ssh 터널을 구성한 후 원격에서 3307로 접속하면 된다.
MySQL 예시
MySQL에서 데이터를 삭제하고 AUTO_INCREMENT 값을 초기화하려면 아래와 같이 실행합니다:
-- 테이블의 모든 데이터를 삭제
TRUNCATE TABLE table_name;
설명:
PostgreSQL 예시
PostgreSQL에서는 데이터를 삭제하고, 시퀀스를 초기화해야 합니다:
-- 테이블의 모든 데이터를 삭제
TRUNCATE TABLE table_name RESTART IDENTITY;
설명:
MongoDB 예시
MongoDB에서는 자동 증가 ID를 기본적으로 지원하지 않지만, 데이터를 삭제하려면 아래 명령을 사용할 수 있습니다:
// 모든 문서 삭제
db.collection_name.deleteMany({});
참고:
제공하는 mysqlcheck로 check 및 복구, optimize를 하려면 다음과 같이 한다.
mysqlcheck -u <USER_ID> -p<PASSWORD> --auto-repair <DB_NAME>
mysqlcheck -u <USER_ID> -p<PASSWORD> --optimize <DB_NAME>
예제로 wordpress의 경우, user를 wordpress로 했다면, 다음과 같이 하면 된다.
mysqlcheck -u wordpress -pPASSWORD_HERE --auto-repair wordpress
mysqlcheck -u wordpress -pPASSWORD_HERE --optimize wordpress
근데 wordpress의 경우 테이블을 optimize를 지원하도록 만들지는 않는다…
raspberry pi에서 설치하는 것을 기준으로 한다.
# apt-get install phpmyadmin
내부 네트워크에서만 접속하게 하고 싶다면, 다음과 같이 한다.
# vi /etc/apache2/conf-enabled/phpmyadmin.conf
아래처럼 Require ip 구문을 추가한다. “::1” 은 local interface, 즉 127.0.0.1과 같다. “192.168.0” 은 192.168.0.x 대역을 말한다.
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
Require ip 192.168.0
Require ip ::1
apache2를 reload한다.
# systemctl reload apache2
phpmyadmin을 설치하고 나서 /phpmyadmin 으로 접속했다. root로 로그인하려고 하니 안된다는 메시지가 나온다. 찾아보니 보안상의 이유로 root를 사용하지 않는 것이 좋단다. 새로운 사용자를 추가한 후 이 사용자로 작업을 한다.
먼저 shell에서 mysql에 root로 로그인한다.
mysql -u root -p
패스워드 입력
나야 역시 dasomoli로 사용자를 만들 것이다. 다음을 입력한다. 아래의 PASSWORD_HERE은 자신이 사용할 password로 바꿔서 입력한다.
create user 'dasomoli'@'localhost' identified by 'PASSWORD_HERE';
dasomoli에 모든 권한을 준다. 난 localhost에서 접속하는 dasomoli에게만 다 줄거다.
grant all privileges on *.* to 'dasomoli'@'localhost' WITH GRANT OPTION;
권한을 flush한다.
FLUSH PRIVILEGES;
이제 phpmyadmin으로 접속해서 ID dasomoli와 PASSWORD_HERE에 썼던 password로 접속한다.
mysql이 자꾸 죽으면서 워드프레스가 DB연결을 못하고 자꾸 에러를 띄운다.
InnoDB memory pool size가 기본으로 128M로 되어 있는데, 이걸 할당을 못하고 죽는 것 같다.
64M로 줄이자.
# vi /etc/mysql/conf.d/innodb.cnf [mysqld] innodb_buffer_pool_size = 64M
죽으면 사실 그냥 service mysql restart 해주면 되는데, 요거도 귀찮으니까 돌려서 죽으면 실행하게 스크립트를 만들자
# vi mysqlmon.sh
#!/bin/bash
linecount=`ps -aux | grep /usr/sbin/mysqld | wc -l`
if [ "$linecount" = "2" ]; then
echo "`date`: Working well" >> /var/log/mysqlmon/mysqlmon.log;
else
echo "`date`: Trying to recover..." >> /var/log/mysqlmon/mysqlmon.err;
service mysql restart;
echo "`date`: Done" >> //var/log/mysqlmon/mysqlmon.err;
fi
crontab에 등록하자
# crontab -e */5 * * * * /root/mysqlmon.sh
log파일을 관리하도록 [Linux] logrotate 설정 글의 예제처럼 logrotate를 설정하자.
* Client characterset, Server characterset
mysql> status
————–
mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1
Connection id: 72
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 39 sec
Threads: 1 Questions: 259 Slow queries: 0 Opens: 231 Flush tables: 1 Open tables: 56 Queries per second avg: 6.641
————–
mysql>
* /etc/mysql/my.cnf [client]
mysql> show variables like ‘%char%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
mysql>
* Database
* Table 및 Column
mysql> ALTER TABLE `reviewdb`.`patch_comments` MODIFY COLUMN `message` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`change_messages` MODIFY COLUMN `message` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`account_groups` MODIFY COLUMN `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
mysql> ALTER TABLE `reviewdb`.`account_group_names` MODIFY COLUMN `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
mysql> ALTER TABLE `reviewdb`.`accounts` MODIFY COLUMN `full_name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`accounts` MODIFY COLUMN `preferred_email` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`account_external_ids` MODIFY COLUMN `email_address` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`account_groups` MODIFY COLUMN `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`projects` MODIFY COLUMN `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
mysql> ALTER TABLE `reviewdb`.`projects` MODIFY COLUMN `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
1. JVM의 Encoding 관련 환경 변수