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.28Copyright © 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