출처
- MySQL :: MySQL 8.0 Reference Manual :: 2.10.1.1 Initializing the Data Directory Manually Using mysqld
- Ubuntu server에 mysql 5.5.x 설치하기 -pupustory@- - Tistory
- [Linux/CentOS] Mysql을 컴파일해서 설치해보자 - AT BLOG
리눅스 정보 조회
출처 : 리눅스 종류 확인, 리눅스 버전 확인 - 제타위키
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
리눅스 비트 확인
64
관련패키지 설치
cmake 설치
MySQL 계정 만들기
MySQL 소스 다운로드
MySQL 소스 압축풀기
MySQL 컴파일 및 설치
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/usr/local/mysql \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/mysql/boost
MySQL 설치 디렉토리 mysql 계정으로 권한 수정
환경설정
[mysqld] bind-address=0.0.0.0 port=3306 basedir=/usr/local/mysql datadir=/usr/local/mysql/data # pid-file=/usr/local/mysql/mysqld.pid # log_error=/usr/local/mysql/mysql_error.log # lc-messages-dir=/usr/local/mysql/share init_connect=SET collation_connection = utf8_general_ci init_connect=SET NAMES utf8 character-set-server=utf8 collation-server=utf8_general_ci # table_cache=1024 max_connections=2048 max_user_connections=500 max_connect_errors=10000 wait_timeout=300 # query_cache_type = 1 # query_cache_size = 128M # query_cache_limit = 5M slow_query_log long_query_time=3 max_allowed_packet=16M sort_buffer_size = 2M # skip-innodb skip-name-resolve # sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION [mysql] default-character-set=utf8 [client] default-character-set=utf8
MySQL 데이터베이스 초기화 (mysql 계정으로 실행)
2018-10-03T03:17:05.650419Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) initializing of server in progress as process 5644
2018-10-03T03:17:08.797874Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: q<chLu;Cy2yY
2018-10-03T03:17:10.426427Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) initializing of server has completed
MySQL 종료 (프로세스가 존재하는 경우)
2018-10-03T01:59:45.345444Z 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) starting as process 3662
2018-10-03T01:59:45.756978Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2018-10-03T01:59:45.761934Z 0 [ERROR] [MY-010147] [Server] Too many arguments (first extra is 'stop').
2018-10-03T01:59:45.761967Z 0 [Warning] [MY-010952] [Server] The privilege system failed to initialize correctly. If you have upgraded your server, make sure you're executing mysql_upgrade to correct the issue.
2018-10-03T01:59:45.762056Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-10-03T01:59:47.444146Z 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.12) Source distribution.
root 암호 초기화
[1] 3745
2018-10-03T03:20:12.311924Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
mysql@bluesanta-ubuntu:/usr/local/mysql$ bin/mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 8.0.12 Source distribution Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.03 sec) mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sql'; Query OK, 0 rows affected (0.08 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye
MySQL 서비스 등록
서비스 mysqld 파일 복사
mysqld 수정
mysqld파일을 열어서 basedir에 mysql이 설치된 디렉토리와 데이터 디렉토리(datadir)를 설정한다.
basedir=/usr/local/mysql datadir=/usr/local/mysql/data
mysqld 서비스 등록
Adding system startup for /etc/init.d/mysqld ...
/etc/rc0.d/K20mysqld -> ../init.d/mysqld
/etc/rc1.d/K20mysqld -> ../init.d/mysqld
/etc/rc6.d/K20mysqld -> ../init.d/mysqld
/etc/rc2.d/S20mysqld -> ../init.d/mysqld
/etc/rc3.d/S20mysqld -> ../init.d/mysqld
/etc/rc4.d/S20mysqld -> ../init.d/mysqld
/etc/rc5.d/S20mysqld -> ../init.d/mysqld
mysqld 서비스 실행
● mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/init.d/mysqld; generated)
Active: active (running) since Wed 2018-10-03 11:58:26 KST; 32s ago
Docs: man:systemd-sysv-generator(8)
Process: 4863 ExecStop=/etc/init.d/mysqld stop (code=exited, status=0/SUCCESS)
Process: 4887 ExecStart=/etc/init.d/mysqld start (code=exited, status=0/SUCCESS)
Tasks: 38 (limit: 4915)
CGroup: /system.slice/mysqld.service
├─4895 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/bluesanta-ubuntu.pid
└─4982 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysq
10월 03 11:58:25 bluesanta-ubuntu systemd[1]: Starting LSB: start and stop MySQL...
10월 03 11:58:25 bluesanta-ubuntu mysqld[4887]: Starting MySQL
10월 03 11:58:26 bluesanta-ubuntu mysqld[4887]: . *
10월 03 11:58:26 bluesanta-ubuntu systemd[1]: Started LSB: start and stop MySQL.
ERROR 1820 (HY000) 오류 해결
mysql> select 1; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> SET PASSWORD = PASSWORD('sql'); Query OK, 0 rows affected, 1 warning (0.00 sec) mysql$gt; select 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.00 sec) mysql>
사용자 추가
mysql> create user 'user1'@'%' identified by 'userpw'; mysql> grant all privileges on *.* to 'user1'@'%' with grant option; mysql> flush privileges;
사용자 추가
create user 'terecal'@'%' identified by '****'; GRANT ALL privileges ON terecal_db.* TO 'terecal'@'%'; flush privileges;