개발환경은 다른 곳에 라즈베리파이를 놓고, 다시 다른 곳에서 golang을 통해서 접속을 하려고 합니다.
모든 초반 작업은 root 계정에서 합니다.
$ mysql -u root -p
DB를 생성
MariaDB [(none)]> CREATE DATABASE test;
MariaDB [(none)]> flush privileges;
mysql 외부 접속을 위한 아이디 생성
를 통해 관리자 아이디로 mysql(mariaDB)에 접속을 하고, 계정을 생성합니다.
내부 접속용 아이디
MariaDB [(none)]> create user ‘이름’@‘localhost’ identified by ‘비밀번호’;
MariaDB [(none)]> flush privileges;
localhost 가 들어가 있으면 내부접속만 허용하는 옵션입니다.
외부 접속용 아이디
MariaDB [(none)]> create user '이름'@'%' identified by '비밀번호'
MariaDB [(none)]> flush privileges;
% 이 들어가면 모든 아이피의 접속을 허용한다는 뜻입니다.
특정 IP에 권한을 주려면 ‘123.123.123.123’ 과 같은 권한을 추가하면 됩니다.
DB 계정에 권한설정
grant all privileges on 디비명.* to 이름@'%' identified by ‘비밀번호';
MariaDB [(none)]> flush privileges;
mysql 설정하기
$sudo vi /etc/mysql/my.cnf
bind-address = 127.0.0.1
설정의 맨 앞에 #을 넣어서 주석처리 합니다.
raspberry 에 mysql 포트 열기
mysql 기본포트는 3306를 사용하고 있습니다.
3306 포트를 열어줍니다.
$ iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
$ iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT
$ iptables-save
golang 소스
go get github.com/go-sql-driver/mysq;
를 통해서 소스 mysql 접속 소스를 다운받습니다. ($GOPATH) 폴더에 자동으로 설치가 됩니다.
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "아이디:비밀번호@tcp(접속주소:포트)/디비명")
if err != nil {
panic(err.Error())
}
defer db.Close()
var version string
db.QueryRow("SELECT VERSION()").Scan(&version)
fmt.Println("Connected to:", version)
}
sql.Open(“mysql”, “아이디:비밀번호@tcp(접속주소:포트)/디비명”)
포트번호까지 전부 적어줘야 합니다.
댓글 없음:
댓글 쓰기