Linux安装mysql(源码)

  1. 作者QQ:67065435 QQ群:669756510

  2. 本站内容全部为作者原创,转载请注明出处!

  3. 安装前的准备

    yum -y --nogpgcheck \
    install \
    libaio \
    libtool \
    net-tools \
    bison-devel \
    libaio-devel \
    ncurses-devel \
    perl-Data-Dumper
    
  4. 下载mysql-5.7.18

    cd /root
    wget --no-check-certificate -c http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
    wget --no-check-certificate -c http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz
    tar -xf mysql-5.7.18.tar.gz
    cd mysql-5.7.18
    
  5. 运行cmake

    cmake /root/mysql-5.7.18 \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DWITH_SYSTEMD=1 \
    -DDOWNLOAD_BOOST=1 \
    -DWITH_BOOST=/root \
    -DDEFAULT_CHARSET=utf8mb4 \
    
    make -j$(nproc)
    make -j$(nproc) install
    
  6. 添加mysql用户

    useradd mysql
    
  7. 创建数据文件目录、所属组、用户改为mysql

    mkdir /data/
    mkdir /data/mysql/
    chown -R mysql:mysql /etc/my.cnf
    chown -R mysql:mysql /data/mysql/
    chown -R mysql:mysql /var/*/mysql*
    chown -R mysql:mysql /usr/local/mysql/
    
  8. 修改SELinux

    vim /etc/sysconfig/selinux
    
    SELINUX=disabled
    
    ESC
    :wq
    
    setenforce 0
    
  9. 修改文件打开数上限

    # 系统文件打开数上限
    vim /etc/security/limits.conf
    
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    
    ESC
    :wq
    
    # MySQL文件打开数上限
    vim /usr/lib/systemd/system/mysqld.service
    
    LimitNOFILE=65535
    
    ESC
    :wq
    
    systemctl daemon-reload
    
  10. 修改配置文件

    vim /etc/my.cnf
    
    [client]
    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysqld]
    datadir=/data/mysql
    socket=/var/lib/mysql/mysql.sock
    symbolic-links=0
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    # 如果是升级MySQL加上:
    # sql-mode = NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION
    
    ESC
    :wq
    
  11. 初始化数据库配置

    # 以下代码执行完之后,会在/data/mysql/mysql-error.log保存初始密码
    
    su mysql
    
    /usr/local/mysql/bin/mysqld \
    --initialize \
    --user=mysql \
    --datadir=/data/mysql \
    --basedir=/usr/local/mysql
    
    # 查看初始密码
    cat /var/lib/mysql/mysql.log|grep password
    
  12. 添加mysqld.service

    exit
    cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    
  13. mysqld.service详细配置

    vim /usr/lib/systemd/system/mysqld.service
    
    # 将下面的配置覆盖整个文件内容
    [Unit]
    Description=MySQL
    After=default.target network.target
    
    [Service]
    User=mysql
    Group=mysql
    Type=forking
    PIDFile=/data/mysql/mysqld.pid
    TimeoutSec=0
    PermissionsStartOnly=true
    ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
    ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/data/mysql/mysql.pid $MYSQLD_OPTS
    EnvironmentFile=-/etc/sysconfig/mysql
    LimitNOFILE = 65535
    Restart=on-failure
    RestartPreventExitStatus=1
    PrivateTmp=false
    RestartSec=5
    StartLimitInterval=0
    
    [Install]
    WantedBy=multi-user.target
    
    ESC
    :wq
    
  14. 启用mysqld.service

    systemctl daemon-reload
    systemctl enable mysqld
    systemctl start  mysqld
    
  15. 测试配置是否正确,没有任何输出则表示一切正常

    /usr/local/mysql/bin/mysqld_pre_systemd
    
  16. 添加mysql到mysql用户环境变量

    su mysql
    vim /home/mysql/.bash_profile
    
    PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/mysql/bin
    
    ESC
    :wq
    
    source /home/mysql/.bash_profile
    
  17. 配置防火墙

    systemctl unmask firewalld
    systemctl enable firewalld
    systemctl start  firewalld
    firewall-cmd --permanent --zone=public --add-port=3306/tcp
    firewall-cmd --reload
    
  18. 尝试连接mysql

    # mysql默认用户为root
    mysql -u root -p
    password:**************
    #修改root[DB用户]初始密码
    SET PASSWORD=PASSWORD('**************');
    show databases;
    use mysql;
    show tables;
    select * from user \G;
    
  19. 设置外部访问密码

    # 数据库名-通配符及格式:
        *[允许操作所有数据库]
        %pay%[允许操作名字包含'pay'的数据库]
        mydatabase[仅允许操作'mydatabase'数据库]
    # 表名-通配符及格式:
        *[允许操作所有表]
        %pay%[允许操作名字包含'pay'的表]
        mytable[仅允许操作'mytable'表]
    # ip地址-通配符及格式:
        %/0.0.0.0[允许任意IP访问]
        xxx.xxx.xxx.xxx[仅限公网访问]
        192.168.x.xxx[仅限局域网访问]
        localhost/127.0.0.1/::1[仅限本机访问]
    
    # 数据库授权格式
    GRANT 权限名 ON 数据库名.数据表名 TO '数据用户'@'访问IP' IDENTIFIED BY '用户密码' WITH GRANT OPTION;
    
    # 为任意数据库表 任意操作 分配root用户,仅限本地访问
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'::1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    
    # 为任意数据库表 任意操作 分配mysql用户,任意IP访问(安装调试阶段、本地开发使用,用后即删)
    GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '**************' WITH GRANT OPTION;
    
    # 为任意数据库表 增删改查 分配单独用户,为不同的业务分配专属用户
    GRANT INSERT ON *.* TO 'insert1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT DELETE ON *.* TO 'delete1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT UPDATE ON *.* TO 'update1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT SELECT ON *.* TO 'select1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    
    # 刷新权限
    FLUSH PRIVILEGES;
    
Copyright © 鲸小鱼 2012-∞ all right reserved,powered by Gitbook修订: 2000-10-10 00:00

results matching ""

    No results matching ""