1. 程式人生 > >mysql5.7版本tar包手動安裝---redhat7.0

mysql5.7版本tar包手動安裝---redhat7.0

1.官網下載安裝包,刪除系統自帶的mariadb,查到幾個包,解除安裝幾個包,總之得刪除乾淨

[[email protected] Desktop]# yum list | grep mariadb
mariadb-libs.x86_64                    1:5.5.41-2.el7_0            @anaconda/7.1
[[email protected] Desktop]# yum remove mariadb-libs.x86_64 -y  ==>刪除這個包
[[email protected] Desktop]# yum list | grep mariadb  ==>已經查詢不到mariadb
[
[email protected]
Desktop]# ls mysql
-5.7.16-linux-glibc2.5-x86_64.tar.gz    ==>這是安裝包

2.建立使用者和組以及將安裝包移動到安裝目錄( /usr/local/ )下

[[email protected] Desktop]# groupadd mysql
[[email protected] Desktop]# useradd -g mysql mysql
[[email protected] Desktop]# mv mysql-5.7.16-linux-glibc2.5
-x86_64.tar.gz /usr/local/ [[email protected] Desktop]# cd /usr/local/ [[email protected] local]# ls bin games lib libexec sbin src etc include lib64 mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz share

3.解壓安裝包,並檔案重新命名為mysql,刪除安裝包(也可以不刪除,有強迫症的都會刪),確定安裝路徑是在 /usr/local 目錄下

[[email protected] local]# tar -zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
[[email protected] local]# ls
bin    include  libexec                                    sbin
etc    lib      mysql-5.7.16-linux-glibc2.5-x86_64         share
games  lib64    mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  src
[[email protected] local]# mv mysql-5.7.16-linux-glibc2.5-x86_64 mysql  ==>改名為mysql
[[email protected] local]# ls
bin  games    lib    libexec  mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz  share
etc  include  lib64  mysql    sbin                                       src
[[email protected] local]# rm mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz 
rm: remove regular file ‘mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz’? y
[[email protected] local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src

4.編輯配置檔案/ect/my.cnf,把/usr/local/mysql/support-files/my-defaults-cnf複製到/etc/目錄下,並改名為my.cnf,也可以自己手動建立編輯

[[email protected] support-files]# cp -a my-default.cnf /etc/my.cnf 

 

[[email protected] local]# vim /etc/my.cnf

 

[mysql]
# 設定mysql客戶端預設字符集
default-character-set=utf8 
socket=/var/lib/mysql/mysql.sock

[mysqld]
#設定3306埠
port = 3306 
socket=/var/lib/mysql/mysql.sock
# 設定mysql的安裝目錄
basedir=/usr/local/mysql
# 設定mysql資料庫的資料的存放目錄
datadir=/usr/local/mysql/data
#設定mysql資料庫的日誌目錄
#log-error=/var/log/mysqld.log ==>若這裡指定了日誌檔案路徑獲取密碼則需要到日誌檔案中查詢, grep 'temporary passwd' /var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid # 允許最大連線數 max_connections
=200 # 服務端使用的字符集預設為utf-8編碼的latin1字符集 character-set-server=utf8 # 建立新表時將使用的預設儲存引擎 default-storage-engine=INNODB max_allowed_packet=16M

5.初始化資料庫

MySQL5.7.6之前版本都是用mysql_install_db這個命令

[[email protected] local]# ./mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

到了5.7版本後已經沒有scripts這個目錄,mysql_install_db也被移動到了bin目錄下,5.7.6版本後這個命令已被棄用,若在5.7.6之後的版本用這個命令會報錯

[[email protected] local]# ./mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2018-12-10 13:42:04 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize  ==>系統提示換成這個命令及引數
2018-12-10 13:42:08 [ERROR]   Child process: /usr/local/mysql/bin/mysqldterminated prematurely with errno= 32
2018-12-10 13:42:08 [ERROR]   Failed to execute /usr/local/mysql/bin/mysqld --bootstrap --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US --basedir=/usr/local/mysql
-- server log begin --
2018-12-10T05:42:04.757607Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead

-- server log end --

5.7.6之後版本的初始化命令,在執行前要確保 資料庫的 data 目錄 是一個空目錄,不讓也會報錯,處理方式是執行 rf 清空目錄,報錯資訊如下

2018-12-10T11:08:53.586149Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.

開始初始化資料庫

[[email protected] local]# ./mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ ==>5.7執行初始化命令
2018-12-10T11:37:30.625023Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-12-10T11:37:30.625070Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2018-12-10T11:37:30.625074Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2018-12-10T11:37:32.454989Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-12-10T11:37:32.659920Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-12-10T11:37:32.749779Z 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: fb994d89-fc6f-11e8-ab5f-4e052dd49fa2.
2018-12-10T11:37:32.765740Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-12-10T11:37:32.766627Z 1 [Note] A temporary password is generated for [email protected]: dsqO!0eNa>V2  ==>注意這個是初始的root密碼

5.設定開機自動啟動指令碼

複製啟動指令碼到/etc/rc.d/init.d/ 目錄下並命名為mysqld,確認這個指令碼具備X許可權,若無執行 chmod 加許可權

[[email protected] local]# cp mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
[[email protected] local]# ll /etc/rc.d/init.d/mysqld
-rwxr-xr-x. 1 root root 10886 Dec 10 19:49 /etc/rc.d/init.d/mysqld

把mysqld服務加入到系統服務

[[email protected] local]# chkconfig --add mysqld
[[email protected] local]# chkconfig --list | grep mysqld

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off  ==>服務已生效

7.啟動資料庫服務

[[email protected] local]# systemctl start mysqld
[[email protected] local]# systemctl status mysqld
mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld)
   Active: active (running) since Mon 2018-12-10 20:00:22 CST; 8s ago   ==>服務一啟動
  Process: 33307 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           ├─33318 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --p...
           └─33522 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/...

Dec 10 20:00:22 localhost.localdomain mysqld[33307]: Starting MySQL.. SUCCESS!
Dec 10 20:00:22 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.

8.登入資料庫修改密碼,並設定允許遠端登入

[[email protected] local]# /usr/local/mysql/bin/mysql -uroot -p'dsqO!0eNa>V2'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.16

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

修改密碼

mysql> SET PASSWORD FOR 'root'@localhost=PASSWORD('redhat');
Query OK, 0 rows affected, 1 warning (0.01 sec)

設定主機可以遠端登入

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'redhat' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;  ==>重新整理許可權表

9.配置環境變數

[[email protected] local]# vim /etc/profile

# MySQL Environment Variable Settings
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

[[email protected] local]# source /etc/profile

10.配置防火牆

[[email protected] local]# firewall-cmd --permanent --add-port=3306/tcp
success
[[email protected] local]# firewall-cmd --reload 
success

11.安裝基本完成