MySQL数据库基本操作
1、MySQL常见版本
- MySQLCommunity Server社区版本,开源免费,但不提供官方技术支持。
- MySQL Enterprise Edition企业版本,需付费,可以试用30天。
- MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
- MySQL Cluster CGE高级集群版,需付费
2、MySQL安装部署
- mysql:数据库客户端
- mysql-server:数据库服务器端
服务:mysqld
端口:3306
主配置文件:/etc/my.cnf
初始化脚本: mysql_install_db
启动命令: mysqld_safe
数据目录 : /var/lib/mysql
套接字文件:/var/lib/mysql/mysql.sock
#当意外关闭数据库时,再开启时假如开启不了,找到这个,删除再启动
进程文件:/var/run/mysqld/mysqld.pid
3、MySQL管理命令
a.创建数据库用户
create user 用户名@‘%’ identified by ‘密码’; #%代表任意远程终端都能使用这个用户连接数据库
b.用户登录数据库
mysql -u用户名 -p库名 -h远程数据库的ip地址 -P(大写)端口
c.用户自己更改自己的密码
set password=password(‘新密码’);
d.root用户为其他用户更改密码
set password for 用户名@‘%’=password(‘新密码’);
e.root找回自己的密码
#关闭数据库
vim /etc/my.cnf 添加skip-grant-tables
#启动数据库,空密码登录并修改密码
update mysql.user set password=password(‘新密码’) where user='root’;
删除skip-grant-tables,重启数据库验证新密码
f.数据库于表的操作
#创建数据库与表
create database 数据库名; #创建数据库
show databases; #查询所有数据库
use 数据库名; #进入数据库
create table 表名 (字段名 字段类型,字段名 字段类型) #创建表
describe 表名; #查看表结构
#往表里插入数据
insert into 表名 (字段1,字段2,字段3) values (对应字段1,对应字段2,对应字段3),(对应字段1,对应字段2,对应字段3)等等; #插入数据
insert into 表1名 (字段1,字段2) select 表2的字段1,表2的字段2 from 表2; #将表2的值复制到表1
#删除表和记录
drop table 表名; #删除表
show table; #查询所有表
delete from 表名 where 字段=数值; #删除数据表字段对应的记录
delete from 表名 where 字段 between 数值1 and 数值2; #删除数据表字段在数值1和数值2之间的
注意:删除库和表用drop,删除记录用delete
#修改表与数据
update 表名 set 要修改的字段1=数值1 where 字段2=数值2 #修改字段2值为数值2的字段1的值为数值1
alter table 表名1 rename 表名2; #修改表1为表2
alter table 表名 modify 字段名 字段类型; #修改字段类型
alter table 表名 add 字段名 字段类型; #增加字段,默认添加在末尾
alter table 表名 add 字段名 字段类型 first; #添加字段到第一行
alter table 表名 add 字段名 字段类型 after 字段; #添加字段到指定字段后
#删除字段
alter table 表名 drop 字段名; #删除字段
例子:
#创建表
Mysql>create table a2(
->id int unsigned not null auto_increment, #字段要求为正数、且自增长、主键
->name char(30) not null default ‘’, #字符型长度30字节,默认值为空格
->age int not null default 0, #字段默认值为0
->primary key (id)); #设置id为主键
g.mysql权限管理
grant select,insert,update,delete(all) on 库名.表名 to 用户名@”%” identified by “密码″; #创建用户并授权
grant select,insert,update,delete on 库名.表名 to 用户名@”%” #给已经创建的用户授权
revoke drop, delete on 数据库.数据表 from 用户名@‘%’; #取消用户的权限
show grants for 用户@‘%’; #查询用户的权限
h.刷新数据库
flush privileges;
i.备份和还原
备份:
mysqldump -u 用户名 -p 数据库名 > /备份路径/备份文件名(备份整个数据库)
mysqldump -u 用户名 -p 数据库名表名 > /备份路径/备份文件名(备份数据表)
备份多个库:--databases 库1,库2
备份所有库:--all-databases
备份多个表:库名表1表2还原: mysql 数据库〈 备份文件
注意:还原时,若导入的是某表,请指定导入到哪一个库中
mysqlhotcopy备份:
备份: mysqlhotcopy --flushlog -u=’用户’ -p=’密码’ --regexp=正则 > 备份目录
还原: cp -a 备份目录 数据目录(/var/lib/mysql)
mysql-binlog日志备份:
二进制日志(log-bin日志):所有对数据库状态更改的操作(create、drop、update等)
修改my.cnf配置文件开启binlog日志记录功能
vim /etc/my.cnf
log-bin=mysql-bin#启动二进制日志
按时间还原:
--start-datetime
--stop-datetime
格式: mysqlbinlog --start-datetime ‘YY-MM-DD HH:MM:SS’ --stop-datetime ‘YY-MM-DDHH:MM:SS‘ 二进制文件 | mysql -u root -p
4、Mysql主从备份
1、开启mysql二进制日志
vim /etc/my.cnf
添加log-bin=mysql-bin
server-id=数值
2、在主服务器上授权,从服务器保存授权的信息
change master to
master_user='asd',
master password='123456',
master host='主服务器ip',
master_log_file='mysql-bin.000003'
3、从服务器会产生授权信息
4、开启从服务器
然后就可以在主服务器上创建文件创建表,在从服务器上可以看到
5、Mysql主主备份
1、首先要按照上面的配置配置主从
2、主从都要配置
3、先配置1为主,2为从
4、再配置2为主,1为从
5、1和2都执行start slave(互为主从)
6、Mysql一主多从
相当于主从,只不过多配置个从
7、Mysql读写分离
读写分离要使用到数据库中间件Amoeba(中国人陈思儒研发)
1、先参照上面配置主从服务器
2、安装jdk,安装amoeba
3、配置amoeba
4、复制一份模板,给从使用
5、修改amoeba启动脚本
/usrlocal/amoeba/bin/amoeba
6、后台运行amoeba
文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。