MYSQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL相关的知识,希望对你有一定的参考价值。
mysql是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
安装部署MYSQL----
源码安装mysql
初始化:[[email protected] mysql]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/(出现两个ok代表初始化成功)
修改启动脚本:cp /usr/local/mysql/./support-files/my-small.cnf /etc/my.cnf---cp /usr/local/mysql/support-files/mysql.server
启动脚本:/etc/init.d/mysqld
对mysql授权:[[email protected] ~]# chmod +x /etc/init.d/mysqld
启动mysql数据库:[[email protected] mysql]# /etc/init.d/mysqld start
出现Starting MySQL.... SUCCESS!----启动成功!
修改变量环境:
vim /etc/profile,末行加PATH="/usr/local/mysql/bin:$PATH",保存并退出
重启[[email protected] ~]# source /etc/profile
设定root密码 [[email protected] ~]# mysqladmin -u root password "szz521"
创建用户---create user ‘system‘@‘192.168.1.%‘ identified by ‘linux‘
赋予用户权限 mysql>grant all on *.* to ‘system‘@‘localhost‘ identified by ‘szz521‘;---赋权的同时创建用户并设定密码
切记!!每次操作完都要刷新flush privileges;
数据库基本操作(增删改查)
查: select 索引 from库.表 where 索引=‘‘;
show tables;查表(必须在库中执行)
desc 表名\G 查找表的结构
show tables from linux;---查看linux库下所有表
select database();---相当于pwd,当前所在库
select user();---查看当前用户
增:
create database 库名;---创建库
先进入库---mysql> create table Cloud(id int(16),Name char(32),Age int(2));
数据 mysql> insert into Cloud(id,Name,Age)values(1,"diazepa m",18);
mysqladmin -uroot password "thinkmo"---创建密码为thinkmo的root用户
create database linux character set gbk---默认字符集为gbk
create index ind_name_dept on 表名(内容1,内容2);----创建联合索引
create unique index uni_ind_name on student(name);
alter table test add age tinyint(2) after id;---在字段name前插入age字段,类型为tinyint(2)
改:
update---update user set user=‘linux‘ where user=‘system‘---把用户名system改成linux
删:
drop database 库名;
delete from mysql.user where user=‘root‘---删除mysq库中的user表中的root用户
pkill mysqld---关闭数据库
mysqladmin -uroot -pthinkmo shutdown---优雅删除
prompt \[email protected] \r:\m:\s ->---修改mysql提示符,localhost为用户名+时间(临时修改)
忘记mysql密码找回:
1.停止mysql
2.mysql_safe --skip-grant-tables --user=mysql &
3.刷新,退出,重启
安全策略:
a.为root设置复杂的密码---mysqladmin -u用户名 password "密码";更改密码---在mysql里---update mysql.user set password=password(‘linux123‘) where user=‘root‘ and host=‘localhost‘;---刷新flush privileges;br/>b.删除无用的mysql内账户,只留下[email protected]
c.删除默认test库
d.删除用户的时候,授权尽量小
*e.针对数据用户处理,更严格一些,root用户要被删除,重新制定管理用户
mysql主从备份
必要条件:
1.主库开启binlog功能
2.主库要建立(授权)账号
3.从库要配置master的信息(change master to)
4.从库开启slave进程
两台服务器(master,slave)
安装mysql/mariadb
vim /etc/my.cnf
主[mysqld]下加入:log-bin=mysqlbinlog---server-id=1
systemctl start mariadb
grant replication slave on . to ‘用户名‘@‘从服务器ip地址‘ identified by ‘主服务器mysql密码‘
flush privileges;
从[mysqld]下加入:server-id=3
systemctl start mariadb
主,mysql> flush table with read lock---锁库
mysql> show master status;
mysqldump -A --events > backup.sql
scp backup.sql 从库ip地址:/root/
从,mysql < backup.sql---将backup.sql导入
主,mysql> unlock table;
从,change master to master_host=‘主库ip‘,master_port=3306,master_user=‘slave‘,master_password=‘密码 ‘,master_log_file=‘同步文件名(show master status;)‘,master_log_pos=(show master status;)
start slave;
主从复制延迟的原因&解决方案:
1.一个主库-从库太多-复制延迟-----建议从库3-5台
2.慢SQL语句过多(语句太长太复杂)-语句优化
3.从库硬件比主库差-----查看主从库系统配置(磁盘IO、CPU、内存等)
4.设计问题
以上是关于MYSQL的主要内容,如果未能解决你的问题,请参考以下文章