MySQL
1.mariadb:
与MySQL 是同一个研发者,语法一致
2.服务端安装:
yum -y install mariadb-server
3.启动:
systemctl start mariadb
4.mariadb 编译安装:
cmake
5.配置文件my.cnf
/etc/my.cnf
6.端口:3306
7.连接:
mysql -h$IP -P$port -u$user -p$password
8.几个概念:
1.数据库服务器:安装数据库的一个操作系统级别的主机2.数据库实例:数据库服务器安装的数据库服务3.数据库:数据库实例中的databases,通过create database 创建4.数据库表:databases 中记录数据的表格9.mysql 命令:
注意:sql 语句以 ; 结尾
(1)grant:赋权
grant all privileges on *.* to '$user'@'$host' identified by '$password';
all privileges:权限,包括:select、update、insert、usage 等等
All/All Privileges:代表全局或者全数据库对象级别的所有权限
Alter:权限代表允许修改表结构的权限,但必须要求有create 和insert 权限配合。如果是rename 表名,则要求有alter 和drop 原表, create 和insert 新表的权限.
Create:权限代表允许创建新的数据库和表的权限。
Delete:权限代表允许删除行数据的权限。
Index:权限代表是否允许创建和删除索引。
Drop:权限代表允许删除数据库、表、视图的权限,包括truncate table 命令。
Insert:权限代表是否允许在表里插入数据,同时在执行analyze table,optimizetable,repair table 语句的时候也需要insert 权限
Select:权限代表允许从表中查看数据,某些不查询表数据的select 执行则不
需要此权限,如Select 1+1, Select PI()+2;而且select 权限在执行update/delete 语句中含有where 条件的情况下也是需要的
Update:权限代表允许修改表中的数据的权限
Usage:权限是创建一个用户之后的默认权限,其本身代表连接登录权限
slave:主从复制权限
*.*:指定权限范围
第一个*:数据库,可以指定库名,*代表当前数据库实例中的所有数据库
第二个*:数据表,可以指定表名,*代表当前数据库中的所有表
'$user'@'$host':用户及主机
$host:主机信息,mysql 会根据主机分配权限,值可以是网段,可以是域名,可以是ip 地址,其中%代表所有远程连接
identified by:配置用户的密码
(2)revoke:取消权限
revoke all on *.* from '$user'@'$host';
刷新权限:flush privileges;
(3)创建数据库
create database $database_name character set utf8[collate utf8mb4_general_ci];
(4)导入数据库文件
# mysql -h$IP -P$port -u$user -p$password < ${sqlfile}.sql
(5)导出(备份)数据库
# mysqldump -h$IP -P$port -u$user -p$password $database [$table] > ${sqlfile}.sql
(6)初始化
mysql_secure_installation
MySQL 主从配置
1.两个角色:
master:源头,源数据库服务器
slave:目标,即备份的服务器
2.日志类型
二进制日志:binary_log,记录全部有效的数据修改日志,一般在master 主机记录
中继日志:relay_log,用于主从复制,临时存储从主库同步的二进制日志
3.配置:
修改my.cnf 文件
参数:
log_bin = [base_name]:静态参数只能在my.cnf 中配置重启服务后生效。5.7之前一般不会启用这个参数。
binlog_format = [row/statement/mixed]:动态参数。5.7 之后默认row 主从复制中安全性比较高
binlog_ignore_db = mysql:不同步MySQL 系统数据库
server_id = 18:#数据库集群中的每个节点id 都要不同,且要求master 的id 小于slave
read_only=[yes|no]:一般用于从库,配置为只读库
4.过程:
(1)主库修改配置文件(/etc/my.cnf),[mysqld]添加:
log_bin=mysql_bin_log
binlog_format=mixed
binlog_ignore_db=mysql
server_id=1
(2)重启服务,生效配置
systemctl restart mariadb
(3)主库创建主从复制的用户:
grant REPLICATION slave on *.* to 'slave'@'192.168.10.129' identified by '000000';
(4)从库修改配置文件,[mysqld]添加:
server_id=10 数值建议大于masterserver_id 的值
(5)重启服务,生效配置
systemctl restart mariadb
(6)从库执行sql 语句:
change master to
master_host='192.168.10.10',master_user='slave',master_password='000000';
start slave;
show slave status\G
(7)测试主从效果:
主库创建数据库:create database slavetest;
从库查询是否有主库创建的数据库:show databases;