腾讯云ubuntu服务器配置MySQL单机多实例记录(使用mysqld_multi)
原创内容,转载请注明处出处
〇、前言
本例使用了mysql-server-5.7.26版本,并同时使用了MySQL自带的 mysqld_multi 来配置和管理多实例
由于分布式计算课程的作业需要多个数据库,手头正好有一个腾讯云服务器,正好拿来试验,服务器系统是ubuntu server 16.04
如何购买或者远程登陆你的服务器此处不赘述。
若想了解同款服务器可从我的推广链接进入:【精选秒杀】热卖云产品限量抢,云服务器20元/月起,服务稳定,价格更优
一、安装MySQL
在终端命令行输入:
sudo apt-get install mysql-server mysql-common
由于我自己在这之前用过mysql的二进制压缩包进行了手动安装MySQL 8.0,可能导致了出错信息如下:
grep: /etc/mysql/: No such file or directory
Unpacking mysql-server-5.7 (5.7.26-0ubuntu0.16.04.1) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_5.7.26-0ubuntu0.16.04.1_all.deb ...
Unpacking mysql-server (5.7.26-0ubuntu0.16.04.1) ...
Processing triggers for systemd (229-4ubuntu21.2) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up apparmor (2.10.95-0ubuntu2.10) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Setting up mysql-server-5.7 (5.7.26-0ubuntu0.16.04.1) ...
update-alternatives: error: alternative path /etc/mysql/mysql.cnf doesn't exist
dpkg: error processing package mysql-server-5.7 (--configure):
subprocess installed post-installation script returned error exit status 2
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.7; however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决方法是删除关于MySQL的内容(实际上这个说法不准确),并且重新安装mysql-server
sudo apt-get remove apparmor
sudo apt-get remove --purge mysql-\*
sudo apt-get install mysql-server mysql-common
期间会有提示需要重置root用户的密码,自己输入即可
最后出现了如图的结果:
二、使用MySQL命令行
在终端输入:
mysql -u root -p # 以root身份启动
输入安装MySQL时设置的 root 的密码,出现如图即表示启动成功:
输入 quit 先退出MySQL的终端,然后终端输入:
cd /etc/mysql/mysql.conf.d && ls # 进入MySQL的默认配置文件所在目录
# 在输入下方语句之前你可以先输入:cat ./mysqld.cnf 来查看该文件的内容
sudo vim ./mysqld.cnf # 编辑默认配置文件
Vim的用法另行百度吧
我在原先的内容基础上,添加了如***意:此处/home/ubuntu/不可用 ~/ 代替,但是datadir、socket、pid-file、log-error等你完全可以自己指定别的位置,端口port同样也是可以自定义
#自定义配置
[mysqld1]
user =mysql
performance_schema =off
skip-name-resolve =0
datadir =/home/ubuntu/mysql/data/10001/data/ # 多实例必须不同
socket =/home/ubuntu/mysql/data/10001/shanghai.sock # 多实例必须不同
pid-file =/home/ubuntu/mysql/data/10001/shanghai.pid # 多实例必须不同
server-id =10001 # 多实例必须不同
port =10001 # 多实例必须不同
bind_address =0.0.0.0
log-error =/home/ubuntu/mysql/data/10001/log/shanghai.log# 多实例必须不同
[mysqld2]
user =mysql
performance_schema =off
skip-name-resolve =0
datadir =/home/ubuntu/mysql/data/10002/data/
socket =/home/ubuntu/mysql/data/10002/beijing.sock
pid-file =/home/ubuntu/mysql/data/10002/beijing.pid
server-id =10002
port =10002
bind_address =0.0.0.0
log-error =/home/ubuntu/mysql/data/10002/log/beijing.log
改好配置文件之后,需要初始化(这里只列举一个实例的例子,其它是同理的):
此处先初始化其中一个,basedir参考了文件中默认的用的是/usr
此处命令二选一,我选了第一个,而第二个是无密码的
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/home/ubuntu/mysql/data/10001/data
sudo mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/home/ubuntu/mysql/data/10001/data
得到如下,记一下所生成的密码:
使用mysqld_multi report命令可以查看当前实例状态,但是如果不用==–defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf==来指定配置文件的话,只能看到下方这样的结果,目前我并未了解其中的原因,若有人知道可以在评论告诉我~~~
# 直接输入了 mysqld_multi report
WARNING: Log file disabled. Maybe directory or file isn't writable?
mysqld_multi log file version 2.16; run: Thu May 2 17:09:36 2019
Reporting MySQL servers
No groups to be reported (check your GNRs)
所以正确做法是这样:
# sudo mysqld_multi --defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf report
# 得到如下结果
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is not running
三、连接实例
1.启动实例
输入命令:
注意命令执行的位置
# cd /etc/mysql/mysql.conf.d
# sudo mysqld_multi --defaults-file=./mysqld.cnf start 1
如果你省略了‘ start’ 后的数字 ‘1’ 则表示启动所有配置文件中写出的实例
# sudo mysqld_multi --defaults-file=./mysqld.cnf report
上述的report用法也是同理,此处report的结果是:
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is not running
2.连接、修改密码
注意参数大小写,以及-p后不要有空格,单引号中就是刚刚需要记住的密码
# sudo mysql -S /home/ubuntu/mysql/data/10001/shanghai.sock -p'jKt?wXnmD0d<'
得到如下结果:
自动生成的密码不好记,要改:
输入:
mysql> set password = '你自己想要设的密码'; # 注意分号结束
至此,我们虽然配置了2个实例,但本文仅展示了针对第一个实例的操作,对另外一个实例操作是一样的
| 参考 | 出处 |
|---|---|
| 1 | 【Linux】01_腾讯云Ubuntu安装及远程访问MySql |
| 2 | linux操作系统安装5.7.17MySQL以及单机多实例 |
| 3 | Linux:mysql允许远程连接 |
| 4 | linux操作系统安装5.7.17MySQL以及单机多实例 |
| 5 | (转)linux mysql 安装,重装遇到问题 |
| 6 | 官方文档——安装好 MySQL 后的操作 |