1. 程式人生 > 實用技巧 >【實戰篇】linux下安裝mysql8.0

【實戰篇】linux下安裝mysql8.0

1.下載安裝

mysql下載地址 https://dev.mysql.com/downloads/mysql/

或者直接使用命令下載

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz

解壓

 sudo tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz

剪下貼上到/usr/local/mysql目錄

sudo mv mysql-8.0.22-linux-glibc2.12-x86_64 /usr/local/mysql

建立data目錄

 sudo mkdir /usr/local/mysql/data

2.建立使用者和使用者組

sudo groupadd mysql
sudo useradd -g mysql mysql

授權

 sudo chown -R mysql.mysql /usr/local/mysql

3.初始化資料庫

sudo /usr/local/mysql/bin/mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize

--lower-case-table-names=1 設定大小寫不敏感,mysql8.0不設定的話,之後修改不了,所以如果需要設定大小寫不敏感的,初始化時務必加上

得到臨時密碼

4.建立配置檔案/etc/my.cnf

# vim /etc/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3308
socket=/tmp/mysql.sock
lower_case_table_names=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_authentication_plugin=mysql_native_password
max_connections=1500
log-error=/usr/local/mysql/mysqlerr.log
#skip-grant-tables

[client]
default-character-set=utf8
socket=/tmp/mysql.sock

[mysql]
default-character-set=utf8
socket=/tmp/mysql.sock

5.新增mysql到系統服務

sudo cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chkconfig --add mysqld
sudo chkconfig --list

6.啟動服務

sudo service mysqld start

可能會報err檔案不存在,建立即可

sudo touch /usr/local/mysql/mysqlerr.log
sudo chown -R mysql:mysql /usr/local/mysql/mysqlerr.log
sudo chmod 777 /usr/local/mysql/mysqlerr.log

建立mysql指令快捷方式

sudo ln -s /usr/local/mysql/bin/mysql /usr/bin

如不建立,直接使用mysql指令會報錯

7.登入mysql

使用初始密碼登入

修改root密碼

建立可遠端的root賬號

修改加密規則

mysql8.0寫法
先建立使用者,再修改加密規則

mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root';
Query OK, 0 rows affected (0.06 sec)

mysql> create user 'root'@'%' identified by 'root';
Query OK, 0 rows affected (0.06 sec)

mysql> alter user 'root'@'%' identified with mysql_native_password by 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)