概念:索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),
它们包含着对数据表里所有记录的位置信息。通过所以能提升查询的效率。
创建索引:create index idx_字段名 on 表名(字段名(字符串类型需要添加长度))
查看索引:show index from 表名
删除索引:drop index idx_字段名 on 表名
备注:对于一组数据创建索引之后,其查询速度提升是显著地,且数据量越大,提升的数量级越大,对于索引,
是快速定位数据所在的位置,如果使用二叉树的数据结构,数据的数据量会按照2的n次幂进行筛选。
账户管理
根据数据库账户的权限可将账户分为以下几种:
1.服务实例级账号:,启动了一个mysqld,即为一个数据库实例;如果某用户如root,拥有服务实例级分配的权限,那么该2 账号就可以删除所有的数据库、连同这些库中的表
2.数据库级别账号:对特定数据库执行增删改查的所有操作
3.数据表级别账号:对特定表执行增删改查等所有操作
4.字段级别的权限:对某些表的特定字段进行操作
5.存储程序级别的账号:对存储程序进行增删改查的操作
刷新权限:** 操作权限和密码后一定记得刷新权限 flush privileges;
查看用户信息:select host,user,authentication_string from user;(user所在的位置为mysql数据库)
查看账户的权限:show grants for '用户名'@'主机名';
创建用户并授权:grant 权限列表 on 数据库.表名 to '用户名'@'主机地址' identified by '密码' WHIH GRANT OPTION
关于权限:create、alter、drop、insert、update、delete、select 所有权限用all privileges
** WHIH GRANT OPTION 是将授予权限的功能赋予账户,所以在写这条语句的时候要慎重
添加用户权限:grant 权限列表 on 数据库.表名 to '用户名'@'主机地址'
移除用户的权限:revoke 权限列表 on 数据库名.表名 from '用户名'@'主机号';
更改用户及密码:update user set authentication_string= PASSWORD('新密码') where user = '用户名';
删除用户:drop user '用户名'@'主机名';
主从配置
1 备份主服务器
sql文件保存 主 所有的数据
mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql
2 将第一步产生的数据 在从上进行恢复 -- 主从数据一致 <让主从在同一起跑线>
mysql -uroot -pmysql < master_db.sql
3 在主上先开启二进制日志功能 设置 server_id
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
将配置文件中数据中的三个值改为以下三行
# bind-address = 127.0.0.1
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
重启主服务器
sudo service mysql restart
4. 在主上
查询主服务器 IP地址 ifconfig 结果是: 192.168.164.91
获取主数据库的状态 mysql> show master status;
在主上查询信息 File 和 Position数据在 配置 从服务器 进行操作的时候需要用到
mysql root@(none):jd> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
mysql-bin.000035 | 154 | | |
+------------------+---------
5. 在主上配置 从 所需权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
FLUSH PRIVILEGES;
6. 配置从服务器
登录从服务器
停止从服务器 mysql > stop slave;
在从上配置主相关信息
change master to master_host='192.168.164.91', master_user='slave',
master_password='slave',master_log_file='mysql-bin.000035', master_log_pos=154;
启动从 mysql> start slave
查看从主状态 mysql> show slave status;
如果启动出错 可以尝试一下 > reset slave
MAC操作MySQL服务
brew services start mysql (启动)
brew services stop mysql (停止)