安装概述
分为5.6与,5.7版本,5.7的安装与5.6略有不同,因为依赖BOOST库,下面给出2个版本的安装脚本,直接运行即可
Mysql 5.6
[root@Tuiliu ~]# cat mysql5.6.sh yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel useradd -s /sbin/nologin mysql cd /usr/local/src wget https://www.mysql.com/Downloads/MySQL-5.6/mysql-5.6.39.tar.gz tar -zxvf mysql-5.6.39.tar.gz cd mysql-5.6.39 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 make && make install cp support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld export PATH=$PATH:/usr/local/mysql/bin/ echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile # 通过cat >> > 追加还是清空追加 cat > /etc/my.cnf << EOF [mysqld] bind-address=0.0.0.0 port=3306 datadir=/data/mysql user=mysql skip-name-resolve long_query_time=2 slow_query_log_file=/data/mysql/mysql-slow.log expire_logs_days=2 innodb-file-per-table=1 innodb_flush_log_at_trx_commit = 2 log_warnings = 1 max_allowed_packet = 512M connect_timeout = 60 net_read_timeout = 120 [mysqld_safe] log-error=/data/mysql/mysqld.log pid-file=/data/mysql/mysqld.pid EOF mkdir -pv /data/mysql chown -R mysql:mysql /usr/local/mysql /data/mysql/ yum install -y perl-Module-Install /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/ cat >> /usr/lib/systemd/system/mysqld.service < EOF [Unit] Description=mysqld After=network.target [Service] Type=forking ExecStart=/etc/init.d/mysqld start [Install] WantedBy=multi-user.target EOF
Msql 5.7
[root@Tuiliu ~]# cat mysql5.7.sh #!/bin/bash # Install boost wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz -P /usr/local/src tar -zxf /usr/local/src/boost_1_59_0.tar.gz -C /usr/local/boost # Install mysql5.7 yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel useradd -s /sbin/nologin mysql cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27.tar.gz tar -zxvf mysql-5.7.27.tar.gz cd mysql-5.7.27 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_BOOST=/usr/local/boost/boost_1_59_0 make && make install cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld export PATH=$PATH:/usr/local/mysql/bin/ echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile # 通过cat >> > 追加还是清空追加 cat > /etc/my.cnf << EOF [mysqld] bind-address=0.0.0.0 port=3306 datadir=/data/mysql user=mysql skip-name-resolve long_query_time=2 slow_query_log_file=/data/mysql/mysql-slow.log expire_logs_days=2 innodb-file-per-table=1 innodb_flush_log_at_trx_commit = 2 log_warnings = 1 max_allowed_packet = 512M connect_timeout = 60 net_read_timeout = 120 [mysqld_safe] log-error=/data/mysql/mysqld.log pid-file=/data/mysql/mysqld.pid EOF mkdir -pv /data/mysql chown -R mysql:mysql /usr/local/mysql /data/mysql/ yum install -y perl-Module-Install /usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --user=mysql --datadir=/data/mysql/ cat > /usr/lib/systemd/system/mysqld.service << EOF [Unit] Description=mysqld After=network.target [Service] Type=forking ExecStart=/etc/init.d/mysqld start [Install] WantedBy=multi-user.target EOF
初始化密码
初始设置密码 mysqladmin -uroot -p password 123 更改密码 mysqladmin -uroot -p123 password 123456 创建账号授权 GRANT ALL PRIVILEGES ON joker.* TO 'student'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges; 删除用户 delete from mysql.user where user="joker"; 跳过密码 [mysqld] skip-grant-tables 修改用户密码 5.6 update user set password=password('123') where user='root' and host='localhost'; 5.7 update mysql.user set authentication_string=password('123456') where user='root' and host='localhost'; flush privileges;
操作概述
MYSQL的增删改查
一,增加表
create table t1(id int primary key auto_increment,name char(10));
insert into student.t1(name) values('joker1'),('joker2'),('joker3');
二,删除表
delete from student.t1 where id=1;
三,改
update student.t1 set name='joker4' where id=3;
四,查
select * from student.t1;
五,终止线程
SHOW PROCESSLIST;
kill processid;杀死线程;
备份概述
最近在使用mysql的时候,经常要遇到导出或者导入数据的情况,对于一些简单的,可以直接使用navicate直接导出结果,但是有很多时候,由于机器在远程端,并且是线上机器的情况下,然后网络不通的话,navicate就不能使用这种方法去导出了,刚好之前没把各个命令做一个总结,所以今天单独对mysqlmysqldump导出的情况做个总结。
一、导出数据库
mysqldump -h 127.0.0.1 -u dbname -p -B dbname|gzip >name.sql.gz
将127.0.0.1的数据库dbname导出到name.sql文件里面
-B参数是可选的,它主要可以增加创建数据库和连接数据库的语句
-A所有库
二、导出数据库的某张表
mysqldump -h 127.0.0.1 -u username -ppassword dbname tablename >name.sql
将ip 127.0.0.1上面的数据库dbname里面的tablename表导出到name.sql文件里面
三、导出数据库的某张表不锁表
mysqldump -h 127.0.0.1 -u username -ppassword --single-transaction dbname tablename>name.sql
有时候导出的时候并没有锁表的权限,例如如果你只是一个只读权限的话,很可能没有锁表的权限,这个时候只要加上一句 --single-transaction 就可以不锁表进行导出
上述对于一、二、三来说都会对数据库进行锁表,加上此命令即可达到不锁表导数据的目的
四、导出数据库的某张表的表结构,不导出数据
mysqldump -h 127.0.0.1 -u username -ppassword --single-transaction -d dbname tablename>name.sql
有时候我们并不是要导出数据,只是要导出表结构,比如说你要按照这个表结构完全去复制创建这个表结构,这种情况下可以使用的方法很多,比如可以直接连上数据库,使用show create table tablename命令,也可以得到建表的语句;此处只是提供另外一种导出表结构的办法,如果要只导出表结构的话,可以加 -d就可以。
恢复概述
由于各种原因导致的我们的数据库数据丢失,可以通过恢复我们备份的数据库减少一定的损失,恢复的原理其实就是在数据库里重新执行SQL语句的过程
一,利用source命令执行SQL
source /usr/local/mysql/dbbak/name.sql
该命令比较简单,只要source命令后接备份文件即可。
二,利用MySQL命令恢复
三,迁移数据库的恢复