centos、ubuntu、debian安裝mysql5.7

centos(親測centos 7.6)

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

如果下載不了可以到這裏下載https://download.csdn.net/download/zhangenter/12034089

yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server

修改默認編碼

character-set-server=utf8

如果需要修改數據存放目錄,修改my.cnf

datadir=/data/mysql

啓動服務

systemctl start mysqld.service

如果修改數據目錄後啓動服務可以有如下報錯

systemctl start mysqld.service

Job for mysqld.service failed because the control process exited with
error code. See “systemctl status mysqld.service” and “journalctl -xe”
for details.

查看日誌文件/var/log/mysqld.log可能是如下錯誤

2019-12-10T07:27:38.255234Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2019-12-10T07:27:38.255255Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2019-12-10T07:27:38.255266Z 0 [ERROR] InnoDB: os_file_get_status() failed on './ibdata1'. Can't determine file permissions
2019-12-10T07:27:38.255281Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2019-12-10T07:27:38.855951Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2019-12-10T07:27:38.855996Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-12-10T07:27:38.856009Z 0 [ERROR] Failed to initialize builtin plugins.
2019-12-10T07:27:38.856014Z 0 [ERROR] Aborting

是文件權限造成,首先給mysql權限

chown -R mysql:mysql /data/mysql

查看應用模式,如果是嚴格模式(Enforcing)就修改爲寬容模式

getenforce

Enforcing

setenforce 0
getenforce

Permissive

再次啓動服務,服務啓動成功。

查看服務狀態

systemctl status mysqld.service

● mysqld.service - MySQL Server Loaded: loaded
(/usr/lib/systemd/system/mysqld.service; enabled; vendor preset:
disabled) Active: active (running) since Tue 2019-12-10 07:50:22
UTC; 4min 41s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 32238 ExecStart=/usr/sbin/mysqld --daemonize
–pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) Process: 32220
ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited,
status=0/SUCCESS) Main PID: 32241 (mysqld) CGroup:
/system.slice/mysqld.service
└─32241 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

查看初始密碼,可以看到下面的密碼是)J>7IZow<Mx6

grep "password" /var/log/mysqld.log 

2019-12-10T07:23:46.609333Z 1 [Note] A temporary password is generated
for root@localhost: )J>7IZow<Mx6

進入mysql

mysql -uroot -p")J>7IZow<Mx6"

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 3 Server version: 5.7.28

Copyright © 2000, 2019, 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的root用戶的密碼

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'My_pwd12';
Query OK, 0 rows affected (0.00 sec)

(密碼必須至少8位,並且含大小寫、特殊字符及數字)否則會提示

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果覺得密碼強度要求太高,需要改低強度,可以看下密碼要求

mysql> SHOW VARIABLES LIKE '%password%';
+----------------------------------------+-----------------+
| Variable_name                          | Value           |
+----------------------------------------+-----------------+
| default_password_lifetime              | 0               |
| disconnect_on_expired_password         | ON              |
| log_builtin_as_identified_by_password  | OFF             |
| mysql_native_password_proxy_users      | OFF             |
| old_passwords                          | 0               |
| report_password                        |                 |
| sha256_password_auto_generate_rsa_keys | ON              |
| sha256_password_private_key_path       | private_key.pem |
| sha256_password_proxy_users            | OFF             |
| sha256_password_public_key_path        | public_key.pem  |
| validate_password_check_user_name      | OFF             |
| validate_password_dictionary_file      |                 |
| validate_password_length               | 8               |
| validate_password_mixed_case_count     | 1               |
| validate_password_number_count         | 1               |
| validate_password_policy               | MEDIUM          |
| validate_password_special_char_count   | 1               |
+----------------------------------------+-----------------+
17 rows in set (0.00 sec)

將validate_password_length可將密碼的長度要求改小
將validate_password_policy改爲low,密碼可以比較簡單

mysql> set global validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_policy=low;
Query OK, 0 rows affected (0.00 sec)

再次設置密碼

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.00 sec)

ubuntu(親測16.04和18.04)

從mysql官網找到debian的mysql安裝包url

wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

如果下載不了可以到這裏下載https://download.csdn.net/download/zhangenter/12034092

配置下載的包

dpkg -i mysql-apt-config_0.8.12-1_all.deb

彈出mysql數據源配置的圖形界面,選擇ok繼續。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

更新源

apt-get update

安裝更新包

apt-get install mysql-server

圖形界面中設置root的密碼xxx
在這裏插入圖片描述
mysql已經可以用了service mysql status可以看到mysql服務正常允許,如果需要修改mysql的數據目錄,可以參考以下內容:
1.停止服務

service mysql stop

2.vi /etc/mysql/mysql.conf.d/mysqld.cnf

datadir         = /var/lib/mysql

改爲自己的目錄,比如/data/mysql

datadir         = /data/mysql

3.創建文件夾/data/mysql

mkdir -p /data/mysql/

將目錄權限給mysql

chown -R mysql:mysql /data/mysql

啓動服務

service mysql start

這時候可能看到如下報錯

Job for mysql.service failed because the control process exited with error code.
See “systemctl status mysql.service” and “journalctl -xe” for details.

打開日誌/var/log/mysql/error.log查看,可能看到裏面的錯誤信息是這樣的

2019-12-15T12:56:54.127873Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable
2019-12-15T12:56:54.127952Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable
2019-12-15T12:56:54.127962Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2019-12-15T12:56:54.728747Z 0 [ERROR] Plugin ‘InnoDB’ init function returned error.
2019-12-15T12:56:54.728819Z 0 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
2019-12-15T12:56:54.728826Z 0 [ERROR] Failed to initialize builtin plugins.
2019-12-15T12:56:54.728829Z 0 [ERROR] Aborting

這是和centos類似的文件權限問題,修改文件 /etc/apparmor.d/usr.sbin.mysqld
參考原始文件有下面兩行

# Allow data dir access
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,

增加兩行

# Allow data dir access
  /data/mysql/ r,
  /data/mysql/** rwk,

保存文件後重啓下服務

service apparmor restart

這時候再去執行service mysql start就沒有問題了。
不過這時候可以看到,因爲是新目錄,之前設置的root密碼已經不在了。

當然如果是移動舊的庫,也可以將/var/lib/mysql目錄拷到/data下(安全起見建議先拷貝後面再刪除/var/lib/mysql目錄裏那些舊的庫)

cp -rp /var/lib/mysql /data/

同樣需要修改/etc/apparmor.d/usr.sbin.mysqld文件,後才能起mysql服務

debian(親測Debian 9.11 (stretch))

apt-get install lsb-release

從mysql官網找到debian的mysql安裝包url

wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

如果下載不了可以到這裏下載https://download.csdn.net/download/zhangenter/12034092

配置下載的包

dpkg -i mysql-apt-config_0.8.12-1_all.deb

在這裏插入圖片描述
更新源

apt-get update

安裝更新包

apt-get install mysql-server

圖形界面中設置root的密碼xxx

等安裝結束,mysql已經可以用了,service mysql status可以看到mysql服務正常允許,如果需要修改mysql的數據目錄,可以參考以下內容:
1.停止服務

service mysql stop

2.vi /etc/mysql/mysql.conf.d/mysqld.cnf

datadir         = /var/lib/mysql

改爲自己的目錄,比如/data/mysql

datadir         = /data/mysql

3.創建文件夾/data/mysql

mkdir -p /data/mysql/

將目錄權限給mysql

chown -R mysql:mysql /data/mysql

當然如果是移動舊的庫,也可以將/var/lib/mysql目錄拷到/data下(安全起見建議先拷貝後面再刪除/var/lib/mysql目錄裏那些舊的庫)

cp -rp /var/lib/mysql /data/

4.啓動服務

service mysql start
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章