MySQL 之在Windows子Ubuntu中安装Mysql

Windows安装子Ubuntu

在这里插入图片描述
在这里插入图片描述

Ubuntu更新源

Ubuntu自带的软件源列表更新很慢,所以我们切换成阿里提供的软件源列表。

# 备份自带的软件源列表
cp /etc/apt/sources.list /etc/apt/sources.list.back
# 删除自带的软件源列表文件
rm -rf /etc/apt/sources.list
# 新建软件源列表文件
vim /etc/apt/sources.list
# 将下面阿里提供的软件源列表内容复制到sources.list文件中
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

安装Mysql

安装MySQL:apt-get install mysql-server

设置root密码:
在这里插入图片描述
查看Mysql服务状态:service mysql status
启动Mysql服务:service mysql start
重启Mysql服务:service mysql restart
在这里插入图片描述
登录Mysql:mysql -h127.0.0.1 -uroot -p123456
在这里插入图片描述

Mysql目录介绍

停止Mysql服务:mysqladmin -u root -p shutdown
默认配置文件目录:/etc/mysql/mysql.conf.d/mysqld.cnf
默认数据存储目录:/var/lib/mysql
启动mysql服务器:/etc/init.d/mysql start/stop
指定配置文件启动服务:mysqld --defaults-file=/etc/my.cnf --user=root
mysqld服务器:/usr/sbin/mysqld
在这里插入图片描述
客户端程序和脚本:/usr/bin
在这里插入图片描述

Mysql多实例安装

新建配置文件:cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my_3307.cnf

新建数据文件并授权:

mkdir -p /home/mysql/data/mysql3307
chown -R mysql:mysql /home/mysql/data/mysql3307
vim /etc/apparmor.d/usr.sbin.mysqld  
在 # Allow data files dir access中添加:
/home/mysql/data/mysql3307/ r,  
/home/mysql/data/mysql3307/** rwk,

在这里插入图片描述
重启apparmor 服务: service apparmor restart

修改my_3307.cnf配置文件:vim /etc/mysql/my_3307.cnf
内容如下:

[mysqld_safe]
socket          = /home/mysql/data/mysql3307/mysqld_3307.sock       --修改为3307
#nice           = 0                                         	    --注释掉

[mysqld]
user            = mysql
pid-file        = /home/mysql/data/mysql3307/mysqld_3307.pid        --修改为3307
socket          = /home/mysql/data/mysql3307/mysqld_3307.sock       --修改为3307
port            = 3307                                              --修改为3307
basedir         = /usr
datadir         = /home/mysql/data/mysql3307                        --修改为新建的数据文件
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address            = 127.0.0.1
key_buffer_size         = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
myisam-recover-options  = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
log_error = /home/mysql/data/mysql3307/error.log                   --修改为新建的数据文件
expire_logs_days        = 10
max_binlog_size   = 100M

初始化数据库:sudo /usr/sbin/mysqld --defaults-file=/etc/mysql/my_3307.cnf --user=mysql --datadir=/home/mysql/data/mysql3307 --initialize

启动Mysql:sudo /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf --datadir=/home/mysql/data/mysql3307

登录Mysql客户端发现root密码未知:
在这里插入图片描述

设置root账号密码:
首先需要杀掉3307这个实例进程,然后使用安全模式创建实例。

ps -ef|grep 3307
kill <pid> --执行账户为mysql,详细信息含有3307

在这里插入图片描述
重新启动该进程,带上--skip-grant-tables参数,跳过身份验证:/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf --datadir=/home/mysql/data/mysql3307 --skip-grant-tables

登录Mysql客户端,不需要输入密码,直接按回车,进入mysql:mysql -uroot -p -S /home/mysql/data/mysql3307/mysqld_3307.sock

修改root密码:update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';

刷新权限:flush privileges;

再次登录,就可以使用上面配置的密码了:mysql -h127.0.0.1 -uroot -p -P3307

发现如果用navicat登录出现错误:
在这里插入图片描述
解决方案如下:

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

停止3307服务:目前只发现使用杀进程的方式来停止
启动3307服务:/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf --datadir=/home/mysql/data/mysql3307
启动mysql 3306实例:service mysql start

主从配置

先按照同样的方式再创建一个3308服务。3307作为主,3308作为从。

配置master

修改master配置:vim /etc/mysql/my_3307.cnf
内容如下:

[mysqld]
## 设置server_id,一般设置为IP,同一局域网内注意要唯一
server_id=100  
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql  
## 开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
log-bin=edu-mysql-bin  
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M  
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed  
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  

重启master服务。

进入master客户端,创建数据同步用户:

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';   

配置slave

修改slave配置: vim /etc/mysql/my_3308.cnf
内容如下:

[mysqld]
## 设置server_id,一般设置为IP,注意要唯一
server_id=101  
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=edu-mysql-slave1-bin  
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M  
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed  
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## 防止改变数据(除了特殊的线程)
read_only=1  

重启slave服务。

配置master和slave链接

进入到master客户端,查看master状态,并记录下File、Position值,在配置slave的时候用到:show master status;
在这里插入图片描述
进入到slave客户端,执行命令:(注意修改成自己的主机、user、端口、file、pos)

change master to master_host='127.0.0.1', 
master_user='slave', 
master_password='123456', 
master_port=3307, 
master_log_file='edu-mysql-bin.000001', 
master_log_pos=617, 
master_connect_retry=30;  
  • master_host: Master 的IP地址
  • master_user: 在 Master 中授权的用于数据同步的用户
  • master_password: 同步数据的用户的密码
  • master_port: Master 的数据库的端口号
  • master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
  • master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
  • master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。

发现这个错误,意思是必须使用alter user来重置密码,解决方案:alter user 'root'@'localhost' identified by '123456';
在这里插入图片描述

执行以下命令,开始开启主从同步: start slave;

在 Slave 的 MySQL 终端执行查看主从同步状态: show slave status \G;
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值