和之前版本的mysql有一些不同,現把完整過程記下來,或許對新手來說有用。
本文描述的安裝是采用通用的二進制壓縮包(linux - Generic)以解壓方式安裝,相當於綠色安裝了。
一、下載通用安裝二進制包
先下載mysql安裝包:打開 http://dev.mysql.com/downloads/mysql/
選擇 linux - Generic並在其下選擇
Linux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive
進行下載。可以先下載到一個臨時目錄里,解壓后,得到兩個包:
mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
mysql-test-5.7.11-linux-glibc2.5-x86_64.tar.gz
只需要mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz 這個包就行了。
二、建立用戶和目錄
建立用戶mysql,組mysql。后面mysql就使用這個用戶來運行(注意這也是mysql啟動腳本中默認的用戶,因此最好不要改名)。
#groupadd mysql
#useradd -r -g mysql mysql
(使用-r參數表示mysql用戶是一個系統用戶,不能登錄)
建立目錄/work/program,后面mysql就安裝在這個目錄下面。
#mkdir /work/program
三、安裝
【解壓】
將前面得到的mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz解壓至/work/program目錄下
#tar zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /work/program
這時在program下得到的目錄名很長,如果不想改名,則可以建立一個聯接:
#ln -s mysql-5.7.11-linux-glibc2.5-x86_64 mysql
此后就可以用/work/program/mysql來找到mysql的安裝目錄了
注意,如果mysql目錄下沒有data目錄,手動建一個。
【目錄權限設置】
將mysql及其下所有的目錄所有者和組均設為mysql:
#cd /work/program/mysql
#chown mysql:mysql -R .
【初始化】
#/work/program/mysql/bin/mysqld --initialize --user=mysql --datadir=/work/program/mysql/data --basedir=/work/program/mysql
注意:
1. data目錄解壓后沒有,需要手動建立(見上文);
2. mysql5.7和之前版本不同,很多資料上都是這個命令
...../scripts/mysql_install_db --user=mysql
而5.7版本根本沒有這個。
初始化成功后出現如下信息:
201x-xx-xxT07:10:13.583130Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
201x-xx-xx T07:10:13.976219Z 0 [Warning] InnoDB: New log files created, LSN=45790
201x-xx-xx T07:10:14.085666Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
201x-xx-xx T07:10:14.161899Z 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: 1fa941f9-effd-11e5-b67d-000c2958cdc8.
201x-xx-xx T07:10:14.165534Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
201x-xx-xx T07:10:14.168555Z 1 [Note] A temporary password is generated for root@localhost: q1SLew5T_6K,
注意最后一行,這也是和之有版本不同的地方,它給了root一個初始密碼,后面要登錄的時候要用到這個密碼。
【配置】
將mysql/support-files下的my-default.cnf拷到安裝目錄的根目錄下,改名為my.cnf
[mysqld]
basedir = /work/program/mysql
datadir = /work/program/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log-error=/work/program/mysql/logs
四、運行
【運行服務器程序】
啟動腳本如下:./mysqld_safe --defaults-file=/work/program/mysql/my.cnf --ledir=/work/program/mysql/bin --user=root --skip-ssl
由於mysqld_safe最終啟動的是mysqlde,所以這里使用參數--ledir來指定mysqld的位置
由於mysqld_safe最終啟動的是mysqlde,所以這里使用參數--ledir來指定mysqld的位置
六、客戶端連接測試
#{mysql}/bin/mysql -uroot -p
此時要求輸入密碼,就是前面初始化時生成的密碼。
這時如果連接服務的時候出現錯誤:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
則需要在在my.cnf中填加:
[client]
socket = /work/program/mysql/tmp/mysql.sock
連上后,在做任何操作前,mysql要求要改掉root的密碼后才能進行操作。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'xxxxxxx';
六、開啟遠程鏈接
root 用戶名 % 所有人都可以訪問 ,password 密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;