Centos 7 最小化mysql 5.7 源码编译安装

1、关闭selinux

sh-4.2# sed -i 's/enforcing/disabled/' /etc/selinux/config
sh-4.2# reboot

 

2、卸载防火墙

sh-4.2# rpm -qa | grep "firewall" | xargs rpm -e --nodeps
sh-4.2# rpm -qa | grep "iptables" | xargs rpm -e --nodeps

 

3、卸载mariadb

sh-4.2# rpm -qa | grep "mariadb*" | xargs rpm -e --nodeps

 

4、配置本地源

sh-4.2# cat /etc/yum.repos.d/GuGe.repo 
[GuGe]
name=GuGe
baseurl=ftp://192.168.1.82
gpgcheck=0
enable=1
# 这里仅适用了Centos 7 官方自带源

 

5、安装插件

sh-4.2# yum -y install gcc gcc-c++ ncurses ncurses-devel autoconf boost wget
sh-4.2# wget https://cmake.org/files/v3.10/cmake-3.10.1.tar.gz -P /opt/
sh-4.2# mkdir -p /usr/local/cmake
sh-4.2# tar -zxf /opt/cmake-3.10.1.tar.gz -C /usr/local/cmake --strip-components 1
sh-4.2# cd /usr/local/cmake/
sh-4.2# ./bootstrap && make -j8 && make install
sh-4.2# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz -P /opt/
sh-4.2# mkdir -p /usr/local/boost
sh-4.2# tar -zxf /opt/boost_1_59_0.tar.gz -C /usr/local/boost/ --strip-components 1

 

6、创建进程组

sh-4.2# groupadd -g 306 mysql
sh-4.2# useradd -g mysql -s /sbin/nologin -M mysql

 

7、安装mysql

sh-4.2# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz -P /opt/
sh-4.2# cd /opt
sh-4.2# tar -zxf mysql-5.7.25.tar.gz -C /opt/
sh-4.2# cd /opt/mysql-5.7.25
sh-4.2# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DDOWNLOAD_BOOST=1 \
> -DWITH_BOOST=/usr/local/boost \
> -DEFAULT_CHARSET=utf8mb4 \
> -DDEFAULT_COLLATION=utf8mb4_general_ci \
> -DSYSCONFDIR=/etc \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DENABLED_LOCAL_INFILE=1 \
> -DEXTRA_CHARSETS=all \
> -DMYSQL_TCP_PORT=3306 \
> -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
> -DWITH_DEBUG=0
sh-4.2# make -j8 && make install

 

8、配置mysql

sh-4.2# grep -E -v '^$|^#' /etc/my.cnf             # 此文件需要手动创建
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-name-resolve skip
-ssl [mysql] default-character-set = utf8mb4 sh-4.2# cp support-files/mysql.server /etc/init.d/mysqld sh-4.2# chmod a+x /etc/init.d/mysqld sh-4.2# sed -i '$a PATH=$PATH:/usr/local/mysql/bin' /etc/profile sh-4.2# sed -i '$a export PATH' /etc/profile sh-4.2# source /etc/profile sh-4.2# cd /usr/local/mysql sh-4.2# chown -R mysql:mysql . sh-4.2# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ sh-4.2# chown -R root * sh-4.2# chown -R mysql data

 

9、启动登录

sh-4.2# service mysqld start
sh-4.2# mysql -uroot -p
mysql> SET PASSWORD = PASSWORD('123..com');        # 因为我用临时密码登录的,所以我做的任何操作都是无效的,必须先更改密码;
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> flush privileges;

 

10、忘记密码 

# 启动免授权服务端
mysqld --skip-grant-tables

# 修改用户名密码
update mysql.user set authentication_string=password('666') where user='root';

# 将数据读取到内存中,从而立即生效
flush privileges;

 

 

11、注意事项

  • mysql5.7默认支持的boost的版本是1.59
  • mysql5.7版本不再使用script下面的mysqld_install_db这个脚本来初始化,而是转移到了bin目录下面,并且该文件已经作废
  • mysql5.7初始化的时候,data是自己创建的,并且data目录不能有内容,初始化的时候会自动写入内容
  • mysqld初始化的时候可以选择临时密码初始化,也可以选择空密码初始化;--initialize-insecure代表空密码初始化;
  • mysql5.7预编译的时候不能用utf8来作为默认字符集,而是utf8mb4;
  • boost软件主要是一些扩展库,不必编译安装,默认解压即可使用;

12、常用命令

查看所有用户
SELECT DISTINCT User FROM mysql.user;    

查看所有用户及权限
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

查看单一用户权限
show grants for 'username'@'%';
select * from mysql.user where user='username' \G

创建本地用户
CREATE USER  'user_name'@'host'  IDENTIFIED BY  'password';

创建远程用户
CREATE USER 'access'@'%' IDENTIFIED BY '123..com';

授权用户数据库指定行权限
GRANT select,insert ON database.table to 'user'@'%';

授权用户远程所有权限
grant all privileges on *.* to 'root'@'%' identified by '123..com';
GRANT all on *.* to 'username'@'%';

授权用户单一权限(selectinsertdeleteupdateGRANT select,insert,delete,update on *.* to 'username'@'%';

删除指定登录用户
DROP USER 'root'@'%';

删除用户并消除所有权限
DROP USER 'user';

更改root密码
update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
update user set password=password("12345") where user="root";

更换指定登录用户密码
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('password');

刷新数据库权限
flush privileges;

选择sql文件执行
source all.sql;

查看数据库连接数
show processlist;
show processlist full;

设置数据库字符集
CREATE DATABASE IF NOT EXISTS DB1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

删除所有的二进制日志,并重新创建一个新的二进制日志
reset master;

从slave删除主从复制关系的位置信息,并完全的清理复制连接参数信息
reset slave all;

查看数据库全局默认字符集
show variables like'%char%';

查看数据库全局默认校对规则
SHOWVARIABLES LIKE 'COLLATION';

查看当前安装的 MySQL 所支持的字符集
show charset;

查看指定数据库的字符集
SHOW CREATE DATABASE db_name;

查看表编码
SHOW CREATE TABLE tbl_name;

查看字段编码
SHOW FULL COLUMNS FROM tbl_name;
# 设置密码
sh-4.2# mysqladmin -uroot -p password 'password'

# 整备
sh-4.2# mysqldump -uroot -p -haddress -A > all.sql

# 压缩备份
sh-4.2#  mysqldump -uroot -p -h DB1 2> /dev/null | gzip > all.sql.gz

# 指定备份数据库备份
sh-4.2# mysqldump -uroot -p -haddress --databases DB1 DB2 ... > all.sql

# 根据binlog备份
sh-4.2# mysqlbinlog mysql-bin.* > all.sql

# mysqldump还原
sh-4.2# mysqldump -uroot -p -h DB1 DB2 ... < all.sql

# 压缩还原
sh-4.2# gunzip -C all.sql.gz | mysql -uroot -p DB1      #压缩备份还原

#根据时间段来还原数据库
sh-4.2# mysqlbinlog --start-datetime="2010-09-29 18:00:00" --stop-datetime="2010-09-29 23:00:00" mysql-bin.000002 | mysql -uroot -p

#根据起始位置来还原
sh-4.2# mysqlbinlog --start-position=370 --stop-position=440  /var/lib/mysql/mysql-bin.000002

# 根据数据库进行还原
sh-4.2# mysqlbinlog -d DB1 /var/lib/mysql/mysql-bin.000002

# 根据数据库所在IP来分-h
sh-4.2# mysqlbinlog -h 192.1681.102  /var/lib/mysql/mysql-bin.000002

#根据数据库端口来还原
sh-4.2# mysqlbinlog -p 13306  /var/lib/mysql/mysql-bin.000002

# 根据数据库serverid来还原
sh-4.2# mysqlbinlog --server-id=1  /var/lib/mysql/mysql-bin.000002

#上面的例子是可以组合使用

 

posted @ 2019-03-18 15:21  寻真丶  阅读(89)  评论(0编辑  收藏  举报