linux虛擬機安裝mysql(Mysql-5.7.10)


注:MySQL5.5版本開始棄用了常規的configure編譯方法,通過cmake來編譯。需要下載安裝cmake編譯器、boost庫、ncurses庫、GNU分析器生成器bison

1. 安裝基礎環境包

   yum -y install gcc gcc-c++ ncurses ncurses-devel

   yum -y install bison

2. 安裝cmake(編譯方式安裝,也可用yum)

  wget https://cmake.org/files/v3.4/cmake-3.4.2.tar.gz

  tar -zxvf cmake-3.4.2.tar.gz 解壓

  cd cmake-3.4.2 進入目錄

  ./configure 默認配置

  make 編譯

  make install 安裝

3. 安裝boost1.60.0

  wget http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz

  tar -zxvf boost_1_60_0.tar.gz

  cd boost_1_60_0

  ./bootstrap.sh --prefix=/usr/local/boost 生成安裝工具bjam和b2

  ./b2 編譯(

 sudo yum install python-devel
 sudo yum install libquadmath-devel
 yum install bzip2-devel

)

  ./b2 install  安裝(安裝目錄上面已經指定,這邊可不指定--prefix=/usr/local/boost)

 

4. 安裝mysql

  wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz

  tar -zxvf mysql-5.7.10.tar.gz 解壓

  cd mysql-5.7.10 進入目錄

  groupadd mysql 創建mysql用戶組

  useradd -g mysql -s /sbin/nologin mysql 建立mysql用戶 (

    -M 不要自動建立用戶的登入目錄
         -g 指定用戶所屬組
         -s 指定用戶登入后所使用的shell,默認值為/bin/bash
         /sbin/nologin 不允許mysql用戶直接登錄系統 )

  配置 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

  注:-DCMAKE_INSTALL_PREFIX=/usr/local/mysql         [MySQL安裝的根目錄]
        -DMYSQL_DATADIR=/data/mysql/data                 [MySQL數據庫文件存放目錄]
        -DSYSCONFDIR=/etc                                  [MySQL配置文件所在目錄]
        -DMYSQL_USER=mysql                              [MySQL用戶名]      
        -DWITH_MYISAM_STORAGE_ENGINE=1                    [MySQL的數據庫引擎]
        -DWITH_INNOBASE_STORAGE_ENGINE=1                 [MySQL的數據庫引擎]
        -DWITH_ARCHIVE_STORAGE_ENGINE=1                   [MySQL的數據庫引擎]
        -DWITH_MEMORY_STORAGE_ENGINE=1                     [MySQL的數據庫引擎]
        -DWITH_READLINE=1                                [MySQL的readline library]
        -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock          [MySQL的通訊目錄]
        -DMYSQL_TCP_PORT=3306                                [MySQL的監聽端口]
        -DENABLED_LOCAL_INFILE=1                          [啟用加載本地數據]
        -DENABLE_DOWNLOADS=1                              [編譯時允許自主下載相關文件]
        -DWITH_PARTITION_STORAGE_ENGINE=1  
        -DEXTRA_CHARSETS=all                             [使MySQL支持所有的擴展字符]
        -DDEFAULT_CHARSET=utf8                          [設置默認字符集為utf8]
        -DDEFAULT_COLLATION=utf8_general_ci             [設置默認字符校對]
        -DWITH_DEBUG=0                                     [禁用調試模式]
        -DMYSQL_MAINTAINER_MODE=0
        -DWITH_SSL:STRING=bundled                          [通訊時支持ssl協議]
        -DWITH_ZLIB:STRING=bundled                         [允許使用zlib library]
        -DDOWNLOAD_BOOST=1
        -DWITH_BOOST=/usr/local/boost

  -> make 編譯
    -> make install 安裝

    -> cd /data
    -> mkdir mysql 創建數據目錄
    -> mkdir logs 創建mysql日志目錄
    -> chown -R mysql:mysql mysql 修改目錄所屬組和所有者

    -> cd /usr/local 進入目錄
    -> chown -R mysql:mysql mysql   將/usr/local/mysql的所有者修改為mysql

    -> cd /usr/local/mysql/bin 進入目錄,准備初始化
    -> ./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data --initialize 初始化
    -> 輸出
        2016-01-21T08:22:12.894937Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
        2016-01-21T08:22:15.362884Z 0 [Warning] InnoDB: New log files created, LSN=45790
        2016-01-21T08:22:15.811051Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
        2016-01-21T08:22:15.897160Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 146afa03-c018-11e5-82ec-000c291b7130.
        2016-01-21T08:22:15.901938Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
        2016-01-21T08:22:15.909391Z 1 [Note] A temporary password is generated for root@localhost: fQBsl)Nwa8+M
    -> 記住生成的初始密碼在首次以root用戶登入時使用 ->  fQBsl)Nwa8+M

  -> 創建配置文件
    -> mv /etc/my.cnf my.cnf.bak 將默認生成my.cnf改名或刪除否則啟動服務會報錯
    -> cd /usr/local/mysql/support-files  進入MySQL安裝目錄支持文件目錄
    -> cp my-default.cnf /etc/my.cnf 復制模板為新的配置文件,根據需要修改配置。不修改則按默認配置參數運行。
    -> 這里對my.cnf稍作字符集和目錄修改
            [client]
            default-character-set=utf8
            port = 3306
            socket = /data/mysql/mysql.sock

            [mysqld]
            default-time-zone = system
            character_set_server=utf8
            user = mysql
            port = 3306
            basedir = /usr/local/mysql
            socket = /data/mysql/mysql.sock
            datadir = /data/mysql/data
            log-error = /data/mysql/logs/mysql_error.log
            pid-file = /data/mysql/mysql.pid

    -> 安裝ssl(/usr/local/mysql/bin)
    -> ./mysql_ssl_rsa_setup

    -> 配置mysql自動啟動
     -> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld  復制啟動腳本
    -> chmod 755 /etc/init.d/mysqld  修改執行權限
    -> chkconfig mysqld on  設置開機啟動(設定mysqld在2、3、4、5等級為on)
       或 chkconfig --level 345 mysqld on  設定mysqld在等級3、4、5為開機運行服務

    -> 啟動MySQL服務
        /usr/local/mysql/support-files/mysql.server start 啟動mysql服務
        /usr/local/mysql/support-files/mysql.server restart 重啟mysql服務
        /usr/local/mysql/support-files/mysql.server stop 停止mysql服務

        或者使用rpm服務命令啟動
        service mysql start
        service mysql restart
        service mysql stop

        或者使用絕對路徑
        /etc/init.d/mysqld start
        /etc/init.d/mysqld restart
        /etc/init.d/mysqld stop

    -> 查看MySQL是否運行
    -> ps aux | grep mysqld
    -> ps -ef | grep 3306
    -> service mysql status

    -> 創建mysql命令文件(創建軟鏈接),才可以在任意位置使用mysql命令訪問數據庫
    -> ln -s /mysql/bin/mysql /usr/bin/

    -> 登陸mysql
    -> mysql -u root -p
    -> 注: -u 用戶名 -p 要求輸入密碼
    -> 輸入剛才生成的初始密碼 fQBsl)Nwa8+M
    -> 登陸成功
    -> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');  修改root密碼為123456
    -> quit 退出命令行

    -> 遠程登錄數據庫
    -> 添加mysql用戶  賬號: mysqluser 密碼: zxc123
    -> insert into mysql.user(Host,User,authentication_string) values("%","mysqluser",password("whj123"));
    -> 注:     新版mysql已將user表的password改為authentication_string

            配置文件my.cnf中sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
               為了安全,指定了嚴格模式,禁止通過insert這種形式直接修改mysql庫中的user表進行添加新用戶
              將配置文件中的STRICT_TRANS_TABLES刪掉,即改為: sql_mode=NO_ENGINE_SUBSTITUTION
               配置文件my.cnf沒有的話,添加sql_mode=NO_ENGINE_SUBSTITUTION,重啟mysql服務即可

    -> 給用戶授權(如果主機名不一樣,則創建新用戶,可以直接使用這個命令創建)
    -> grant select,insert,update,delete,create,drop on *.* to mysqluser@"%" identified by "whj123";
       注:     grant 權限 on 數據庫.* to 用戶名@登錄主機 identified by "密碼";
               數據庫: *.* 表示所有庫的所有表; test.* 表示test庫的所有表;test.test_table 表示test庫的test_table表
               登錄主機: '%'表示所有ip; 'localhost'表示本機; '192.168.10.2' 特定IP
               創建一個mysqluser用戶,密碼為zxc123,可以在任何主機上登錄,並對所有數據庫有增刪改查的權限。

            顯示所有的數據庫
            show databases;

            使用某一個數據庫
            use 數據庫名;

            顯示一個數據庫的所有表(必須先使用use databasename;)
            show tables;

            退出mysql命令行
            quit;

            刪除數據庫和數據表
            drop database 數據庫名;
            drop table 數據表名;

            查看MYSQL數據庫中所有用戶           
            select distinct concat('User: ''',user,'''@''',host,''';') as query from mysql.user;

            查看數據庫中具體某個用戶的權限
            show grants for 'root'@'localhost';
            select * from mysql.user where user='root' \G;

            查看user表結構
            desc 數據庫名.數據表名;

            新建用戶,最后三個參數分別是登錄ip,用戶名,密碼
            insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
            
            用戶授權
            格式: grant 權限 on 數據庫.* to 用戶名@登錄主機 identified by "密碼";
            需要執行刷新權限的命令: flush privileges;
            
            用戶授權示例:
            為用戶授予部分權限
            grant select,update on testDB.* to test@localhost identified by '1234';
            flush privileges;

            授予一個用戶所有數據庫的某些權限
            grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
            flush privileges;

            撤銷已經賦予給 MySQL 用戶權限的權限。
            revoke all on *.* from test@"%";

            刪除用戶
            delete from user where User='test' and Host='localhost';
            flush privileges;

            刪除賬戶及權限:
            drop user 用戶名@'%';
            drop user 用戶名@localhost;

            修改指定用戶密碼
            mysql -u root -p 使用root登錄
            update mysql.user set password=password('新密碼') where User="test" and Host="localhost";
            flush privileges;

    -> 防火牆開放3306端口
    -> firewall-cmd --permanent --add-port=3306/tcp
    -> 注:     centos7 采用了firewall動態管理防火牆,廢棄iptables靜態模型的防火牆。

            關閉防火牆sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
            可以禁用firewall,使用iptables
            systemctl stop firewalld 關閉firewall防火牆
            systemctl disable firewalld 開機禁用firewall防火牆
            yum install iptables-services 安裝iptables
            systemctl start iptables 啟用iptables
            systemctl enable iptables 開機啟用iptables

            firewall命令:
            systemctl enable firewalld.service 設置開機啟動
            systemctl start firewalld 或 systemctl start firewalld.service 開啟防火牆
            firewall-cmd --state  或 systemctl status firewalld 查看centos7防火牆狀態
            firewall-cmd --reload 重新加載防火牆

            使用firewalld開放Linux端口:
            firewall-cmd --permanent --add-port=80/tcp --zone=public 開啟80端口
            firewall-cmd --permanent --add-port=1000-2000/tcp     永久開啟1000-2000端口
            firewall-cmd --query-port=80/tcp 查詢1000端口開啟狀態
            命令含義:
            --zone 作用域
            --add-port=80/tcp 添加端口,格式為:端口/通訊協議
            --permanent     永久生效,沒有此參數重啟后失效

            FirewallD的默認區域是public。
            阻塞區域(block):任何傳入的網絡數據包都將被阻止。
            工作區域(work):相信網絡上的其他計算機,不會損害你的計算機。
            家庭區域(home):相信網絡上的其他計算機,不會損害你的計算機。
            公共區域(public):不相信網絡上的任何計算機,只有選擇接受傳入的網絡連接。
            隔離區域(DMZ):隔離區域也稱為非軍事區域,內外網絡之間增加的一層網絡,起到緩沖作用。對於隔離區域,只有選擇接受傳入的網絡連接。
            信任區域(trusted):所有的網絡連接都可以接受。
            丟棄區域(drop):任何傳入的網絡連接都被拒絕。
            內部區域(internal):信任網絡上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網絡連接。
            外部區域(external):不相信網絡上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網絡連接。

        -> 用mysqluser賬號遠程登錄mysql

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM