SET GLOBAL time_zone='Asia/Seoul';
SET time_zone='Asia/Seoul';
SET GLOBAL time_zone='Asia/Seoul';
SET time_zone='Asia/Seoul';
Show variables like"c%";
ALTER TABLE cms_account converttocharset utf8;
ALTER DATABASE sigongweb_db charset utf8;
SET GLOBAL max_allowed_packet = 1024 * 1024 * 16;
SET SESSION max_allowed_packet = 1024 * 1024 * 16;
mysql 에는 데이터를 암호화, 복호화하는 AES_ENCRYPT, AES_DECRYPT 함수가 있습니다. 이 암호화는 128비트 길이로 인코딩되어 저장됩니다. 그러나 소스를 수정해서 256비트까지 확장시킬수 있다고 합니다.
AES_ENCRYPT 는 문자열을 암호화하고, 바이너리 문자열을 반환하지만, AES_DECRYPT 는 암호화된 문자열을 복호화합니다. AES_DECRYPT 는 유효하지 않은 데이터는 padding을 감지하고, NULL을 반환합니다.
# "암호화 키"는 임의의 값이 올 수 있으며, "문자열"은 암호화하고자 하는 값이 됩니다.
# AES_ENCRYPT 암호화
INSERT INTO 테이블명 VALUES (HEX(AES_ENCRYPT('문자열', '암호화 키')));
# AES_DECRYPT 복호화
SELECT AES_DECRYPT(UNHEX(필드명), '암호화 키') FROM 테이블명;
예제 (ex #1
# AES_ENCRYPT 암호화
INSERT INTO tbname VALUE (HEX(AES_ENCRYPT('123456','가나다라')));
// 결과: 5A33E11DC0B638E4E5E74EBD52F55E3D
# AES_DECRYPT 복호화
SELECT AES_DECRYPT(UNHEX(필드명), '가나다라') FROM tbname;
출처: <https://blog.habonyphp.com/213>
DB 속도 + 검색 문제로 상기기능 실제적용 실패
select * from music
where
(type='song' or type='album')
and
created_date > DATE_ADD(now(), INTERVAL -1 hour);
music 테이블에서 type이 song 또는 album 인 데이터가 지난 1시간 동안 얼마나 들어왔는지 검색
-1~ -24 까지 하면 최근 한 시간 부터 24시간까지 검색이 가능
이런 식으로 끝에
-1 hour 최근 한 시간
-1 day 최근 하루
-1 month 최근 한달
select * from music
where
created_date between '2013-10-10' and '2013-10-14';
10일부터 14일까지 검색
1. my.cnf 파일 내용을 아래와 같이 수정한다.(Mysql, MariaDB 설정 파일)
명령어 : vi /etc/my.cnf [엔터]
[client]
default-character-set = utf8
[mysqld]
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
2. 위 내용을 추가 한 후, my.cnf 파일을 저장 한다.
3. 내용을 추가 한 뒤, 설정한 내용을 적용 하기 위해 mysql을 재시작 한다.
- 명령어 : service mysqld restart 또는 /etc/init.d/mysql restart
(MariaDB도 Mysql 명령과 동일 함.)
4. DB에 접속 하여 정상적으로 적용 되었는지 확인 한다.
- 명령어 : mysql -u root -p [엔터]
> show variables like 'c%';
+--------------------------+-----------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/server/mysql/share/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
+--------------------------+-----------------------------------------
Groupby
예약어가 무조건 전체 그룹으로 묶여야만 하는 설정 해제
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
For some reason mysql on OS X gets the locations of the required socket file a bit wrong, but thankfully the solution is as simple as setting up a symbolic link.
You may have a socket (appearing as a zero length file) as /tmp/mysql.sock or /var/mysql/mysql.sock but 1 or more apps is looking in the other location for it.
Rather than move the socket and have to edit config files and remember to keep edited files local and away from servers where the paths are correct, simply create a symbolic link so your mac finds the required socket, even when it's looking in the wrong place!
If you have /tmp/mysql.sock but no /var/mysql/mysql.sock then...
cd /var
sudo mkdir mysql
sudo chmod 755
mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock
If you have /var/mysql/mysql.sock but no /tmp/mysql.sock then
cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock
You will need permissions to create the directory and link, so just prefix the commands above with sudo if necessary.
Hope this helps. It has sorted this exact issue for me on 3 macs so far.