yum 安装请参考 https://www.yuque.com/u1733081/hsolox/brcy5h

卸载mariadb

在CentOS中默认安装有MariaDB,这个是MySQL的分支,源码安装之前需要先写在mariadb

  1. rpm -qa | grep mariadb
  2. rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
  3. rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
  4. rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
  5. sudo 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官网下载,两个版本的都有
image.png
可以选择最新的GA版本https://dev.mysql.com/downloads/mysql/5.7.html?os=src

创建用户此用户不可以登录

  1. groupadd mysql
  2. useradd -r -g mysql -s /bin/false mysql

在home下面创建mysql 文件夹 设置群组

  1. mkdir /home/mysql
  2. chown -R mysql:mysql mysql

安装mysql

  1. 创建文件夹

    1. mkdir /usr/local/mysql
  2. 移动mysql-boost-5.7.27.tar.gz 到 **/usr/local/mysql ** 并解压

  3. 将 boost_1_59_0.tar.gz 解压至 /usr/local/boost 目录
  4. 进入解压目录执行以下命令
  1. cmake . \
  2. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  3. -DMYSQL_DATADIR=/home/mysql/data \
  4. -DDOWNLOAD_BOOST=1 \
  5. -DWITH_BOOST=/usr/local/boost_1_59_0 \
  6. -DSYSCONFDIR=/etc \
  7. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  8. -DWITH_PARTITION_STORAGE_ENGINE=1 \
  9. -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  10. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  11. -DWITH_MYISAM_STORAGE_ENGINE=1 \
  12. -DENABLED_LOCAL_INFILE=1 \
  13. -DENABLE_DTRACE=0 \
  14. -DDEFAULT_CHARSET=utf8mb4 \
  15. -DDEFAULT_COLLATION=utf8mb4_general_ci \
  16. -DWITH_EMBEDDED_SERVER=1

有boost版本的cmake 方式

  1. cmake \
  2. -DBUILD_CONFIG=mysql_release \
  3. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  4. -DMYSQL_DATADIR=/home/mysql/data \
  5. -DSYSCONFDIR=/etc \
  6. -DMYSQL_UNIX_ADDR=/home/mysql/tmp/mysql.sock \
  7. -DEXTRA_CHARSETS=all. \
  8. -DDEFAULT_CHARSET=utf8 \
  9. -DDEFAULT_COLLATION=utf8_general_ci \
  10. -DWITH_BOOST=boost
  1. 编译并安装

    1. make install
  2. 初始化数据库,在/usr/local/mysql/bin/下执行以下命令 ```bash ./mysqld —initialize-insecure —user=mysql —basedir=/usr/local/mysql —datadir=/home/mysql/data

  1. 6. 修改`/etc/my.cnf`
  2. ```bash
  3. 主数据库
  4. [client]
  5. #客户端字符集
  6. default-character-set=utf8mb4
  7. [mysqld]
  8. character_set_server=utf8mb4
  9. collation_server=utf8mb4_general_ci
  10. basedir=/usr/local/mysql
  11. datadir=/home/mysql/data
  12. socket=/home/mysql/tmp/mysql.sock
  13. pid-file=/home/mysql/data/mysqld.pid
  14. slow-query-log-file=/home/mysql/log/mysql-slow.log
  15. log-error=/home/mysql/log/mysql_error.log
  16. slow-query-log=on
  17. lower_case_table_names=1
  18. sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  19. symbolic-links=0
  20. # 以下为主从复制需要的配置,如果不需要主从复制可以不配置
  21. #server-id给数据库服务的唯一标识
  22. server-id=1
  23. #log-bin设置此参数表示启用binlog功能,并指定路径名称
  24. log-bin=/home/mysql/mysql-bin/mysql-bin
  25. sync_binlog=0
  26. #设置日志的过期天数
  27. expire_logs_days=7
  28. #binlog_cache_size此参数表示binlog使用的内存大小
  29. binlog_cache_size=1024M
  30. !includedir /etc/my.cnf.d
  31. 从数据库
  32. [client]
  33. #客户端字符集
  34. default-character-set=utf8mb4
  35. [mysqld]
  36. character_set_server=utf8mb4
  37. collation_server=utf8mb4_general_ci
  38. basedir=/usr/local/mysql
  39. datadir=/home/mysql/data
  40. socket=/home/mysql/tmp/mysql.sock
  41. pid-file=/home/mysql/data/mysqld.pid
  42. slow-query-log-file=/home/mysql/log/mysql-slow.log
  43. log-error=/home/mysql/log/mysql_error.log
  44. slow-query-log=on
  45. lower_case_table_names=1
  46. sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  47. symbolic-links=0
  48. # 以下为主从复制需要的配置,如果不需要主从复制可以不配置
  49. #server-id给数据库服务的唯一标识
  50. server-id=2
  51. #read_only设置数据库为只读,防止从库数据修改后,主从数据不一致,但是有Super权限的账号还是有写的权限,所以要某个账号只读的话,可以去掉账号的Super权限
  52. read_only=1
  53. #指定需要同步的表
  54. replicate-wild-do-table=atrm.%
  55. #binlog_cache_size此参数表示binlog使用的内存大小
  56. binlog_cache_size=1024M
  1. 创建文件夹

    1. mkdir -p /home/mysql/log
    2. mkdir -p /home/mysql/data
    3. mkdir -p /home/mysq/tmp
    4. mkdir -p /home/mysql/mysql-bin
    5. 并修改权限
    6. chown -R mysql:mysql log
    7. chown -R mysql:mysql data
    8. chown -R mysql:mysql tmp
    9. chown -R mysql:mysql mysql-bin
  2. mysql 加入启动服务

    1. cp support-files/mysql.server /etc/init.d/mysqld
    2. chkconfig --add mysqld # 添加到系统服务
    3. chkconfig mysqld on # 开机启动
  3. 启动mysql

    1. systemctl start mysqld
    2. #查看mysql 状态
    3. systemctl status mysqld
    4. #停止myslq
    5. systemctl stop mysqld
    6. #重启mysql
    7. systemctl 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;

  1. <a name="ztcKW"></a>
  2. ### 常见问题
  3. **1、The server quit without updating PID file ** 启动失败,my.cnf配置问题,字符集配置导致错误,或者看下所有指定的文件夹或者文件是否存在,权限是否为mysql chown -R mysql:mysql<br />启动报错看下 日志。
  4. **2、Check that you do not already have another mysqld process using the same InnoDB data or log files.** 这个错误是线程被占用,ps -ef|grep mysql 杀掉进程重新启动就可以
  5. 3、mysql 提示 mysql 命令不存在;修改 `/etc/profile`
  6. ```bash
  7. vim /etc/profile
  8. 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.

  1. set password=password('Dxxa@2020');
  2. flush privileges;

简单三步骤

  1. CREATE DATABASE dtcp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. CREATE USER 'dtcp'@'%' IDENTIFIED BY 'Dtcp@2020';
  3. GRANT ALL PRIVILEGES ON dtcp.* TO 'dtcp'@'%' WITH GRANT OPTION;

创建用户

  1. 1.创建用户:
  2. # 指定ip:192.118.1.1的mjj用户登录
  3. create user 'alex'@'192.118.1.1' identified by '123';
  4. # 指定ip:192.118.1.开头的mjj用户登录
  5. create user 'alex'@'192.118.1.%' identified by '123';
  6. # 指定任何ip的mjj用户登录
  7. create user 'alex'@'%' identified by '123';
  8. 2.删除用户
  9. drop user '用户名'@'IP地址';
  10. 3.修改用户
  11. rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
  12. 4.修改密码
  13. set password for '用户名'@'IP地址'=Password('新密码');

创建数据库

  1. CREATE DATABASE IF NOT EXISTS xxx_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

对当前用户授权

  1. #查看权限
  2. show grants for '用户'@'IP地址'
  3. #授权 mjj用户仅对db1.t1文件有查询、插入和更新的操作
  4. grant select ,insert,update on db1.t1 to "alex"@'%';
  5. # 表示有所有的权限,除了grant这个命令,这个命令是root才有的。mjj用户对db1下的t1文件有任意操作
  6. grant all privileges on db1.t1 to "alex"@'%';
  7. #mjj用户对db1数据库中的文件执行任何操作
  8. grant all privileges on db1.* to "alex"@'%';
  9. #mjj用户对所有数据库中文件有任何操作
  10. grant all privileges on *.* to "alex"@'%';
  11. #取消权限
  12. # 取消mjj用户对db1的t1文件的任意操作
  13. revoke all on db1.t1 from 'alex'@"%";
  14. # 取消来自远程服务器的mjj用户对数据库db1的所有表的所有权限
  15. revoke all on db1.* from 'alex'@"%";
  16. 取消来自远程服务器的mjj用户所有数据库的所有的表的权限
  17. revoke all privileges on *.* from 'alex'@'%';

MySql备份命令行操作

  1. # 备份:数据表结构+数据
  2. mysqdump -u root db1 > db1.sql -p
  3. # 备份:数据表结构
  4. mysqdump -u root -d db1 > db1.sql -p
  5. #导入现有的数据到某个数据库
  6. #1.先创建一个新的数据库
  7. create database db10;
  8. # 2.将已有的数据库文件导入到db10数据库中
  9. mysqdump -u root -d db10 < db1.sql -p