開始
額,無事不浪,主要還是因為碰到的問題。有個朋友拿我的伺服器部署個專案,於是給他開了個賬號,管理員許可權就夠了。然而他把Mysql給佔了,我也要用咋辦,他的專案我也不好動,混用同一個Server的話也很煩,只能百度另起一個了
動動手
主要都是些小白操作
假設你安裝了Mysql了,傻瓜式yum/dnf/apt-get
那種,然後起了Server,執行netstat -ntlp
也能看到3306埠。就能用的那種,額,然後介紹下我這邊的環境
- CentOS 7
- Mysql 5.7
安裝過MongoDB的同學應該知道,需要自己指定data(資料檔案)和log(日誌)目錄;使用Chrome跨域版也要指定user-dir
使用者資料目錄。So,有了這些經驗接下來就省事多了。
我們猜測一個新的Server應該離不開:
- 安裝目錄
- 存放資料檔案的目錄
- 埠
- 更詳細的配置?
搬磚
百度一些操作,大致知道這是初始化一個Server的
mysqld --initialize
複製程式碼
額,應該先建立一個資料夾,比如在/usr/local/mysql3307
裡,然後再
mkdir data
複製程式碼
建立一個資料目錄。也需要一份配置my.cnf
,可以參考下預設的/etc/my.cnf
:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
複製程式碼
照葫蘆畫瓢我們vim my.cnf
:
[mysqld]
basedir=/var/local/mysql3307
datadir=/var/local/mysql3307/data
port=3307
server_id=4
character-set-server=utf8
socket=/var/lib/mysql/mysql3307.sock
symbolic-links=0
log-error=/var/log/mysqld3307.log
pid-file=/var/run/mysqld/mysqld3307.pid
複製程式碼
socket、log、pid這種直接後面加個3307,方便以後找。然後可以初始化了:
mysqld --defaults-file=/usr/local/mysql3307/my.cnf --initialize --user=root
複製程式碼
這裡
initialize
引數得放到defaults-file
後面....
之後會在data
目錄下看到一堆子檔案。再建立金鑰(不知道這個有啥用。。。)
mysqld_ssl_rsa_setup --defaults-file=/usr/local/mysql3307/my.cnf
複製程式碼
為了避免之後登陸無密碼錯誤,這裡我們再寫個檔案mysql-init
,初始化密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
複製程式碼
看參考文章裡時,會用mysqld_safe
來啟動Mysql Server,然而等待我的卻是command not found
,查到stackoverlfow上時說這個命令叫mysqld_save
,但還是沒用,文件上是:
mysqld
reads options from the [mysqld] and [server] groups.mysqld_safe
reads options from the [mysqld], [server], [mysqld_safe], and [safe_mysqld] groups.mysql.server
reads options from the [mysqld] and [mysql.server] groups.
大致上區別就是讀取my.cnf
時會從對應的開頭拿配置,比如之前寫的就是[mysqld]
。另外mysqld_safe
可以後臺啟動Server,直接mysqld
的話命令列一直停著,沒法兒用了。
說了這麼多,mysqld_safe
還是沒有,於是我們可以這樣:
mysqld\
--defaults-file=/usr/local/mysql3307/my.cnf\
--init-file=/usr/local/mysql3307/mysql-init\
--user=root\
&
複製程式碼
就最後加個&
結束。第一次啟動時init密碼,之後可以去掉init-file
啟動
最後
連線Mysql與預設的有些區別,它需要指定socket
與port
,像這樣:
# xx是.socket地址
mysql --socket=xx port=3307 -uroot -p
複製程式碼
一篇水文。。。