官网: https://dev.mysql.com/downloads/mysql
官方文档: Installing MySQL on Linux Using the MySQL Yum Repository
CentOS 7 安装MySQL 5.7 或安装指定版本MySQL
教程: 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
注意事项: 建议在安装之前先检查系统是否安装过MySQL/Mariadb,若有安装记录则先卸载
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 大小写敏感的问题
解决大小写敏感: 修改 /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 设置远程连接
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 设置连接属性
-
1 选择一个服务器当做主服务器,将服务器上需要的数据进行备份
-
2 安装从库的 MySQL,需要与主服务器的版本保持一致,出集群配置外,其他数据库配置也需要保持一致
-
3 将主服务器上的数据同步到从库中(主从集群只会同步创建集群之后的数据操作,对于原有的数据不会同步)
修改配置文件
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;
记录下 File
、Position
字段的值
其中 File
为操作日志文件,Position
为指针位置,这两个字段是数据同步的关键
修改配置文件
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
则从库同步状态良好
至此,主从集群的配置已经基本完成
登录从库,添加只读用户
GRANT SELECT ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';
其中 userName
为数据库用户名,yourPassword
为用户密码
刷新权限
FLUSH PRIVILEGES;
在连接从库时使用只读用户
登录从库,执行命令
-- 停止存从库服务
STOP SLAVE;
-- 重置从库服务
RESET SLAVE ALL;
-- 展示从库服务信息
SHOW SLAVE STATUS;
- 1 当主从数据库大小写配置不一致时可能导致从库复制失效。eg: 主库不区分大小写,从库区分大小写,主库新建的表表名被强制小写,而从库同步的表名为大写,此时主库的表数据无法复制到从库。解决办法,停止从库服务,修改配置与主库保持一致,物理删除表数据,启动从库服务,数据会重新自动同步,如果不同步可手动同步。