Skip to content

Latest commit

 

History

History
336 lines (193 loc) · 9.75 KB

4.1.windows.mysql.md

File metadata and controls

336 lines (193 loc) · 9.75 KB

MySQL 安装使用教程

1 下载

官网: https://dev.mysql.com/downloads/mysql

2 安装

2.1 官方文档

官方文档: Installing MySQL on Linux Using the MySQL Yum Repository

2.2 Windows

MySQL5.7.19免安装版的安装与卸载重装

2.3 Linux

CentOS 7 安装MySQL 5.7 或安装指定版本MySQL

2.4 macOS

教程: https://segmentfault.com/q/1010000000475470

操作步骤:

(1) 安装: brew install mysql

(2) 启动 mysql: mysql.server start

(3) 执行 mysql 初始化脚本(mysql 自带): /usr/local/opt/mysql/bin/mysql_secure_installation

根据脚本提示进行设置即可

(4) MySQL 常用命令

启动: mysql.server start

停止: mysql.server stop

查看状态: mysql.server status

(使用 root 账户)登陆 MySQL(必须在 MySQL启动的情况下): mysql -u root -p

2.5 卸载

Centos7 完全卸载mysql

Centos7上卸载&安装MariaDB数据库

注意事项: 建议在安装之前先检查系统是否安装过MySQL/Mariadb,若有安装记录则先卸载

3 使用

3.1 常见问题

How to allow remote connection to mysql

走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1

Use mysqldump to Back Up MySQL or MariaDB

Copying MySQL Databases to Another Machine

MySQL - How to turn off ONLY_FULL_GROUP_BY?

mysql 禁用 ONLY_FULL_GROUP_BY,暂时解决错误(sql_mode=only_full_group_by)

MySQL查看和修改时区time_zone

使用MySQL的jdbc驱动关于时区引发的问题

关于 MySQL 四种事务隔离级别的设置与简要说明

  • 关于 MySQL 大小写敏感的问题

mysql 设置大小写不敏感

解决大小写敏感: 修改 /etc/my.cnf 文件,在 [mysqld] 标签下添加 lower_case_table_names=1,重启 MySQL 服务

修改之后原来大写的表会被删除,操作须慎重

  • MySQL 无法删除数据库

    删除数据库命令:

    drop database `数据库名`;
    
    -- eg: 删除名为 demo 的数据库  
    drop database `demo`;

    数据库删除失败,可能出现的错误:

    ERROR 1010 (HY000): Error dropping database (can't rmdir

    解决办法:

    参考: MySQL: Error dropping database (errno 13; errno 17; errno 39)

    操作步骤:

    (1) 在 MySQL 命令行中运行:

    SHOW VARIABLES WHERE Variable_name LIKE '%datadir%';

    (2) 关闭 MySQL 服务

    centOS 7 : systemctl stop mysqld

    macOS : mysql.server stop

    Windows: net stop mysql (或 mysql57,据mysql 版本而定)

    (3) 进入(1)中数据存储目录

    (4) 删除和数据库同名的文件夹

    (5) 启动 MySQL,重新连接;如果数据库还存在,则执行删除命令,如果不存在,则不需要执行

MySQL 8.0 设置远程连接

Mysql 8 remote access

CREATE USER 'root'@'%' IDENTIFIED BY 'your_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

Connection Java-MySql : Public Key Retrieval is not allowed

设置连接属性

allowPublicKeyRetrieval=true&useSSL=false

DBeaver 设置连接属性

dbeaver_connection_config

Linux下MySQL的数据文件存放在哪里的

4 MySQL 主从集群搭建

MySQL 数据库主从集群搭建

4.1 准备工作

  • 1 选择一个服务器当做主服务器,将服务器上需要的数据进行备份

  • 2 安装从库的 MySQL,需要与主服务器的版本保持一致,出集群配置外,其他数据库配置也需要保持一致

  • 3 将主服务器上的数据同步到从库中(主从集群只会同步创建集群之后的数据操作,对于原有的数据不会同步)

4.2 配置主数据库

修改配置文件

vim /etc/my.cnf

添加配置

[mysqld]
log-bin=mysql-bin
server-id=1

重启 mysql 服务(centOS 7+)

systemctl restart mysqld

使用命令行以 root 用户进入 MySQL

mysql -u root -p

输入密码,进入

创建拥有从节点同步权限的用户

GRANT REPLICATION SLAVE ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';

其中 userName 为用户名,yourPassword 为密码

刷新权限

FLUSH PRIVILEGES;

查询主库状态

show master status;

记录下 FilePosition 字段的值

其中 File 为操作日志文件,Position 为指针位置,这两个字段是数据同步的关键

image-20220212153754171

4.3 配置从库

修改配置文件

vim /etc/my.cnf

添加配置

[mysqld]
server-id=2

注意: 每一个服务器的 server-id 都不能重复

重启 mysql 服务(centOS 7+)

systemctl restart mysqld

使用命令行以 root 用户进入 MySQL

mysql -u root -p

输入密码,进入

执行同步语句

CHANGE MASTER TO MASTER_HOST='masterServerIp', MASTER_PORT=masterPort, MASTER_USER='masterUser', MASTER_PASSWORD='masterPassword', MASTER_LOG_FILE='masterLogFile', MASTER_LOG_POS=masterPosition;

其中 masterServerIp 为主库服务器地址(ip或域名)

masterPort 为主库 mysql 端口(需要确保外网可访问)

masterUser 为刚创建的用于向从库同步数据的用户

masterPassword 为刚创建的用于向从库同步数据的用户密码

masterLogFile 为主库的日志文件名,对应字段 File

masterPosition 为主库指针位置,对应字段 Position

启动从库同步

start slave;

查询从库同步状态

show slave status\G;

主要关注字段: Slave_IO_Running,Slave_SQL_Running,这两个字段值为 Yes 则从库同步状态良好

image-20220212155245546

至此,主从集群的配置已经基本完成

4.4 从库设置只读用户

登录从库,添加只读用户

GRANT SELECT ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';

其中 userName 为数据库用户名,yourPassword 为用户密码

刷新权限

FLUSH PRIVILEGES;

在连接从库时使用只读用户

4.5 推荐参考资料

MySQL集群部署(使用多个MySQL实例模拟)

MySQL主从复制配置

4.7 清除主从复制关系

登录从库,执行命令

-- 停止存从库服务
STOP SLAVE;

-- 重置从库服务
RESET SLAVE ALL;

-- 展示从库服务信息
SHOW SLAVE STATUS;

4.X 主从集群常见问题

  • 1 当主从数据库大小写配置不一致时可能导致从库复制失效。eg: 主库不区分大小写,从库区分大小写,主库新建的表表名被强制小写,而从库同步的表名为大写,此时主库的表数据无法复制到从库。解决办法,停止从库服务,修改配置与主库保持一致,物理删除表数据,启动从库服务,数据会重新自动同步,如果不同步可手动同步。