11.ubuntu 16.04.6 安装 mysql
1.更新软件源
sudo apt-get update
2.安装mysql
sudo apt-get install mysql-server
设置账号和密码
上述命令会安装以下包: apparmor mysql-client-5.7 mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7 因此无需再安装mysql-client等。安装过程会提示设置mysql root用户的密码,设置完成后等待自动安装即可。默认安装完成就启动了mysql。
3.启动和关闭mysql服务器
#开始
service mysql start
#关闭
service mysql stop
#重启
service mysql restart
启动
关闭
确认是否启动成功,mysql节点处于LISTEN状态表示启动成功:
sudo netstat -tap | grep mysql
4.进入mysql shell界面
mysql -u root -p
输入账号和密码
5.设置mysql允许远程访问
vi /etc/mysql/mysql.conf.d/mysqld.cnf
保存退出,然后进入mysql服务,执行授权命令:
grant all on *.* to root@'%' identified by '你的密码' with grant option; flush privileges;
然后执行quit命令退出mysql服务,执行如下命令重启mysql
重启
开机启动mysql
systemctl enable mysql
用客户端连接测试
附:主从同步
首先两台机器先配置 /etc/my.cnf 的访问权限
查看自己服务器上的配置
cat /etc/apparmor.d/usr.sbin.mysqld
可以看到mysql配置文件所在的配置/etc/my.cnf没有访问权限。
修改配置文件 /etc/apparmor.d/usr.sbin.mysqld
vi /etc/apparmor.d/usr.sbin.mysqld
重启系统
reboot
主:192.168.88.51
从:192.168.88.52
登录主执行
vi /etc/my.cnf
增加
[mysqld] #如果有了就不再创建
log_bin=mysql-bin
server_id=1
保存重启
service mysql restart
登录从执行
vi /etc/my.cnf
增加
[mysqld]#如果有了就不再创建
log_bin=mysql-bin
server_id=2
保存重启
service mysql restart
进入主mysql命令行
mysql -u root -p
--创建一个账户用来复制,仅限IP为192.168.88.52连接
mysql> GRANT REPLICATION SLAVE ON *.* TO 'mscopy'@'192.168.88.52' IDENTIFIED BY 'mscopy';
mysql> FLUSH PRIVILEGES;
mysql> show master status;
--记住file和position字段,等会有用
进入从命令行
mysql -u root -p
--注意MASTER_HOST为主服务器IP --MASTER_USER,MASTER_PASSWORD为之前在主服务器上创建的账户 --MASTER_LOG_FILE,MASTER_LOG_POS应和上图File,Position字段对应 mysql> CHANGE MASTER TO MASTER_HOST='192.168.88.51', MASTER_USER='mscopy', MASTER_PASSWORD='mscopy', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; --开始复制 mysql> start slave;
mysql> show slave status\G;
至此从主上创建看看能不能同步
注意:
1.配置不区分数据表名大小写
vi /etc/my.cnf
在[mysqld]下面加入lower_case_table_names=1
保存重启服务
service mysql restart
2.手动恢复从服务器不同步主的情况(恢复之前请先同步两台服务器数据以后再进行)
首先 先停止从服务器192.168.88.52
#登录服务器 mysql -u root -p #停止从服务 stop slave;
再登录主服务器192.168.88.51
#登录账号 mysql -u root -p #查看主状态 show master status;
记录号红框内容
再次回到从服务器
执行命令
change master to master_host='{主IP地址}',master_user='{主账号}', master_password='{主密码}', master_port={端口}, master_log_file='{红框值}', master_log_pos={红框值} ;
#重启从
start slave ;
重新查看状态恢复正常
参考:https://blog.csdn.net/liu59412/article/details/104900185
附:mysql 不区分大小写 https://blog.csdn.net/qq_45502336/article/details/119534955
AppArmor是一个高效和易于使用的Linux系统安全应用程序。 AppArmor对操作系统和应用程序所受到的威胁进行从内到外的保护,甚至是未被发现的0day漏洞和未知的应用程序漏洞所导致的攻击。 AppArmor安全策略可以完全定义个别应用程序可以访问的系统资源与各自的特权。 AppArmor包含大量的默认策略,它将先进的静态分析和基于学习的工具结合起来,AppArmor甚至可以使非常复杂的应用可以使用在很短的时间内应用成功。
编辑 apparmor配置文件
sudo vim /etc/apparmor.d/usr.sbin.mysqld
增加要备份的目录路径
/data/mysql/ r, /data/mysql/** rwk,
重启配置
sudo service apparmor restart
然后修改目录访问权限
mkdir -p /data/mysql/ chown -R mysql:mysql /data/mysql/ chmod -R 777 /data/mysql/
vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] #指定不同mysqlid server-id=1921686650 #binlog 日志格式 binlog_format=MIXED #binlog日志文件 log_bin=/data/mysql/mysql-bin #binlog过期清理时间 expire_logs_days=7 #binlog每个日志文件大小,默认为 1G max_binlog_size=100m #binlog缓存大小 binlog_cache_size=4m #最大binlog缓存大小 max_binlog_cache_size=512m #指定需要记录 binlog 的数据库 #binlog_do_db=bigserver_sit #指定忽略记录 binlog 的数据库 #binlog_ignore_db=test
#重启数据库
sudo /etc/init.d/mysql restart
#查询是否开启binlog
show variables like 'log_%';