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
发布了70 篇原创文章 · 获赞 56 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zhangenter/article/details/103475971