开始
额,无事不浪,主要还是因为碰到的问题。有个朋友拿我的服务器部署个项目,于是给他开了个账号,管理员权限就够了。然而他把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,但还是没用,文档上是:
mysqldreads options from the [mysqld] and [server] groups.mysqld_safereads options from the [mysqld], [server], [mysqld_safe], and [safe_mysqld] groups.mysql.serverreads 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
一篇水文。。。