centos7源码安装mysql(附有主从复制配置⽂件)boost版本和⾮
boost版本
yum 安装请参考
卸载mariadb
在CentOS中默认安装有MariaDB,这个是MySQL的分⽀,源码安装之前需要先写在mariadb
rpm -qa | grep mariadb
rpm -e --nodeps  mariadb-5.5.52-1.el7.x86_64
rpm -e --nodeps  mariadb-libs-5.5.52-1.el7.x86_64
rpm -e --nodeps  mariadb-server-5.5.52-1.el7.x86_64
sudo yum install -y cmake make gcc gcc-c++ bison  ncurses ncurses-devel libaio-devel
下载mysql
如果是下载的⽆boost版本的mysql,需要单独下载boost
boost版本下载
可以去mysql官⽹下载,两个版本的都有
可以选择最新的GA版本sql/downloads/mysql/5.7.html?os=src
创建⽤户此⽤户不可以登录
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
在home下⾯创建mysql ⽂件夹设置组
mkdir  /home/mysql
chown -R mysql:mysql mysql
安装mysql
1. 创建⽂件夹
mkdir  /usr/local/mysql
1. 移动mysql-boost-5.7. 到**/usr/local/mysql** 并解压
2. 将 boost_1_59_ 解压⾄/usr/local/boost⽬录
3. 进⼊解压⽬录执⾏以下命令
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-
DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1
有boost版本的cmake ⽅式
cmake \
-DBUILD_CONFIG=mysql_release \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/home/mysql/tmp/mysql.sock \
-DEXTRA_CHARSETS=all. \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_BOOST=boost
1. 编译并安装
make install
1. 初始化数据库,在/usr/local/mysql/bin/下执⾏以下命令
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
1. 修改/etc/myf
主数据库
[client]
#客户端字符集
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
basedir=/usr/local/mysql
datadir=/home/mysql/data
socket=/home/mysql/tmp/mysql.sock
pid-file=/home/mysql/data/mysqld.pid
slow-query-log-file=/home/mysql/log/mysql-slow.log
log-error=/home/mysql/log/mysql_error.log
slow-query-log=on
lower_case_table_names=1
sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION symbolic-links=0
# 以下为主从复制需要的配置,如果不需要主从复制可以不配置
#server-id给数据库服务的唯⼀标识
server-id=1
#log-bin设置此参数表⽰启⽤binlog功能,并指定路径名称
log-bin=/home/mysql/mysql-bin/mysql-bin
sync_binlog=0
#设置⽇志的过期天数
expire_logs_days=7
#binlog_cache_size此参数表⽰binlog使⽤的内存⼤⼩
binlog_cache_size=1024M
!includedir /etc/myf.d
从数据库
[client]
#客户端字符集
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
basedir=/usr/local/mysql
datadir=/home/mysql/data
socket=/home/mysql/tmp/mysql.sock
pid-file=/home/mysql/data/mysqld.pid
slow-query-log-file=/home/mysql/log/mysql-slow.log
log-error=/home/mysql/log/mysql_error.log
slow-query-log=on
lower_case_table_names=1
sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION symbolic-links=0
安装mysql初始化数据库失败
# 以下为主从复制需要的配置,如果不需要主从复制可以不配置
#server-id给数据库服务的唯⼀标识
server-id=2
#read_only设置数据库为只读,防⽌从库数据修改后,主从数据不⼀致,但是有Super权限的账号还是有写的权限,所以要某个账号只读的话,可以去掉账号的Super权限
read_only=1
#指定需要同步的表
replicate-wild-do-table=atrm.%
#binlog_cache_size此参数表⽰binlog使⽤的内存⼤⼩
binlog_cache_size=1024M
1. 创建⽂件夹
mkdir -p /home/mysql/log
mkdir -p /home/mysql/data
mkdir -p /home/mysq/tmp
mkdir -p /home/mysql/mysql-bin
并修改权限
chown -R mysql:mysql log
chown -R mysql:mysql data
chown -R mysql:mysql tmp
chown -R mysql:mysql mysql-bin
1. mysql 加⼊启动服务
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld    # 添加到系统服务
chkconfig mysqld on        # 开机启动
1. 启动mysql
systemctl start mysqld
#查看mysql 状态
systemctl status mysqld
#停⽌myslq
systemctl stop mysqld
#重启mysql
systemctl restart mysqld
10.设置mysql root 可以远程连接
[root@centos7-tool data]# sudo grep 'temporary password' /var/log/mysqld.log  // 通过这个命令可以查密码
use mysql
update user set host = '%' where user = 'root';
flush privileges;
flush privileges;
#设置mysql 密码
set password for 'root'@'%'=password('dxxa@2020');
set password=password('Dxxa@2020');// 上⾯命令不好使,⽤这个
flush privileges;
#开启3306 防⽕墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
// 开启远程连接
mysql -uroot -p
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dxxa@2020'
flush privileges;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dxxa@2020' WITH GRANT OPTION;
常见问题
1、The server quit without updating PID file 启动失败,myf配置问题,字符集配置导致错误,或者看下所有指定的⽂件夹或者⽂件是否存在,权限是否为mysql chown -R mysql:mysql
启动报错看下⽇志。
2、Check that you do not already have another mysqld process using the same InnoDB data or log files. 这个错误是线程被占⽤,ps -ef|grep mysql 杀掉进程重新启动就可以
3、mysql 提⽰ mysql 命令不存在;修改/etc/profile
vim /etc/profile
export PATH=$JAVA_HOME/bin:/usr/local/mysql/bin:$PATH
4、****ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
set password=password('Dxxa@2020');
flush privileges;
简单三步骤
CREATE DATABASE dtcp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'dtcp'@'%' IDENTIFIED BY 'Dtcp@2020';
GRANT ALL PRIVILEGES ON dtcp.* TO 'dtcp'@'%'  WITH GRANT OPTION;
创建⽤户
1.创建⽤户:
# 指定ip:192.118.1.1的mjj⽤户登录
create user 'alex'@'192.118.1.1' identified by '123';
# 指定ip:192.118.1.开头的mjj⽤户登录
create user 'alex'@'192.118.1.%' identified by '123';
# 指定任何ip的mjj⽤户登录
create user 'alex'@'%' identified by '123';
2.删除⽤户
drop user '⽤户名'@'IP地址';
3.修改⽤户
rename user '⽤户名'@'IP地址' to '新⽤户名'@'IP地址';
4.修改密码
set password for '⽤户名'@'IP地址'=Password('新密码');
创建数据库
CREATE DATABASE IF NOT EXISTS xxx_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
对当前⽤户授权
#查看权限
show grants for '⽤户'@'IP地址'
#授权 mjj⽤户仅对db1.t1⽂件有查询、插⼊和更新的操作
grant select ,insert,update on db1.t1 to "alex"@'%';
# 表⽰有所有的权限,除了grant这个命令,这个命令是root才有的。mjj⽤户对db1下的t1⽂件有任意操作grant all privileges  on db1.t1 to "alex"@'%';
#mjj⽤户对db1数据库中的⽂件执⾏任何操作
grant all privileges  on db1.* to "alex"@'%';
#mjj⽤户对所有数据库中⽂件有任何操作
grant all privileges  on *.*  to "alex"@'%';
#取消权限
# 取消mjj⽤户对db1的t1⽂件的任意操作
revoke all on db1.t1 from 'alex'@"%";
# 取消来⾃远程服务器的mjj⽤户对数据库db1的所有表的所有权限
revoke all on db1.* from 'alex'@"%";
取消来⾃远程服务器的mjj⽤户所有数据库的所有的表的权限
revoke all privileges on *.* from 'alex'@'%';
MySql备份命令⾏操作
# 备份:数据表结构+数据
mysqdump -u root db1 > db1.sql -p
# 备份:数据表结构
mysqdump -u root -d db1 > db1.sql -p
#导⼊现有的数据到某个数据库
#1.先创建⼀个新的数据库
create database db10;
# 2.将已有的数据库⽂件导⼊到db10数据库中
mysqdump -u root -d db10 < db1.sql -p

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。