yum 安装请参考 https://www.yuque.com/u1733081/hsolox/brcy5h
卸载mariadb
在CentOS中默认安装有MariaDB,这个是MySQL的分支,源码安装之前需要先写在mariadb
rpm -qa | grep mariadbrpm -e --nodeps mariadb-5.5.52-1.el7.x86_64rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64sudo yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel libaio-devel
下载mysql
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
如果是下载的无boost版本的mysql,需要单独下载boost
boost版本下载
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.31.tar.gz
可以去mysql官网下载,两个版本的都有
可以选择最新的GA版本https://dev.mysql.com/downloads/mysql/5.7.html?os=src
创建用户此用户不可以登录
groupadd mysqluseradd -r -g mysql -s /bin/false mysql
在home下面创建mysql 文件夹 设置群组
mkdir /home/mysqlchown -R mysql:mysql mysql
安装mysql
创建文件夹
mkdir /usr/local/mysql
移动mysql-boost-5.7.27.tar.gz 到
**/usr/local/mysql **并解压- 将 boost_1_59_0.tar.gz 解压至
/usr/local/boost目录 - 进入解压目录执行以下命令
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
编译并安装
make install
初始化数据库,在
/usr/local/mysql/bin/下执行以下命令 ```bash ./mysqld —initialize-insecure —user=mysql —basedir=/usr/local/mysql —datadir=/home/mysql/data
6. 修改`/etc/my.cnf````bash主数据库[client]#客户端字符集default-character-set=utf8mb4[mysqld]character_set_server=utf8mb4collation_server=utf8mb4_general_cibasedir=/usr/local/mysqldatadir=/home/mysql/datasocket=/home/mysql/tmp/mysql.sockpid-file=/home/mysql/data/mysqld.pidslow-query-log-file=/home/mysql/log/mysql-slow.loglog-error=/home/mysql/log/mysql_error.logslow-query-log=onlower_case_table_names=1sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONsymbolic-links=0# 以下为主从复制需要的配置,如果不需要主从复制可以不配置#server-id给数据库服务的唯一标识server-id=1#log-bin设置此参数表示启用binlog功能,并指定路径名称log-bin=/home/mysql/mysql-bin/mysql-binsync_binlog=0#设置日志的过期天数expire_logs_days=7#binlog_cache_size此参数表示binlog使用的内存大小binlog_cache_size=1024M!includedir /etc/my.cnf.d从数据库[client]#客户端字符集default-character-set=utf8mb4[mysqld]character_set_server=utf8mb4collation_server=utf8mb4_general_cibasedir=/usr/local/mysqldatadir=/home/mysql/datasocket=/home/mysql/tmp/mysql.sockpid-file=/home/mysql/data/mysqld.pidslow-query-log-file=/home/mysql/log/mysql-slow.loglog-error=/home/mysql/log/mysql_error.logslow-query-log=onlower_case_table_names=1sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONsymbolic-links=0# 以下为主从复制需要的配置,如果不需要主从复制可以不配置#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
创建文件夹
mkdir -p /home/mysql/logmkdir -p /home/mysql/datamkdir -p /home/mysq/tmpmkdir -p /home/mysql/mysql-bin并修改权限chown -R mysql:mysql logchown -R mysql:mysql datachown -R mysql:mysql tmpchown -R mysql:mysql mysql-bin
mysql 加入启动服务
cp support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld # 添加到系统服务chkconfig mysqld on # 开机启动
启动mysql
systemctl start mysqld#查看mysql 状态systemctl status mysqld#停止myslqsystemctl stop mysqld#重启mysqlsystemctl restart mysqld
10.设置mysql root 可以远程连接 ```bash [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;
<a name="ztcKW"></a>### 常见问题**1、The server quit without updating PID file ** 启动失败,my.cnf配置问题,字符集配置导致错误,或者看下所有指定的文件夹或者文件是否存在,权限是否为mysql chown -R mysql:mysql<br />启动报错看下 日志。**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````bashvim /etc/profileexport 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
