MySQL 5.7的安装
准备: MySQL安装包 ,登录MySQL需要的用户名和密码,需要创建的数据库名称,数据库脚本文件
在以下标红色的步骤中替换成上述内容即可
1.MySQL安装
-
将 MySQL安装包上传至服务器下/usr/local下
-
任意路径下,执行以下命令来创建MySQL用户组和MySQL用户
groupadd mysql
useradd -g mysql mysql
-
切换mysql文件所在目录下将文件解压。
cd /usr/local
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -
为了避免出现权限问题,给mysql解压文件所在目录赋予权限,重命名mysql文件夹
mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
rm -rf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
chmod a+x mysql
chown -R mysql:mysql mysql
- 在etc下删除原有配置文件my.cnf,并替换为以下内容的新my.cnf配置文件
rm -r /etc/my.cnf
vi /etc/my.cnf
并在该文件内添加以下代码:
输入i进入编辑模式,粘贴以下内容
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
lower_case_table_names=1
max_allowed_packet=16M
init_connect='set names utf8'
explicit_defaults_for_timestamp=true
default-time_zone = '+8:00'
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
输入esc和:wq保存并退出
- 授权该文件
cd /etc
chmod a+x my.cnf
- 配置环境路径,顺利登陆MySQL
vi /etc/profile
在文件最后添加如下内容
export PATH=$PATH:/usr/local/mysql/bin
使配置文件生效
source /etc/profile
- 初始化数据库
cd /usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
即使记录下初始化登录密码,如图所示:
方框中为初始化密码,注意前面空格不是密码范围,从第一个字母到最后为密码(最后一位密码有时是空格)
- 启动数据库
/usr/local/mysql/support-files/mysql.server start
- 添加数据库服务到系统服务中并设置开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod a+x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
systemctl start mysqld
chkconfig mysqld on
- 创建软链接(本操作可能不需要)
ln -s /usr/local/mysql/bin/mysql /usr/bin
- 用临时密码登录并修改密码
使用临时密码登录
mysql -u root -p
输入刚才记录的初始化密码
如图所示,出现Welcome字样表示登录成功
登录成功后修改 用户名和密码(修改密码需与程序中的数据库密码一致)如:用户名为 root
密码为123456
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql>exit;
- 如果系统启用了防火墙,可以把MySQL 的3306 端口加入防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
2.MySQL 配置
- 查看系统中是否存在数据库脚本文件夹dataSql
cd /usr/local
ll
若存在则使用工具直接将数据库脚本上传至服务器该目录下
不存在则创建dataSql文件夹,再上传数据库脚本至该目录下
cd /usr/local
mkdir dataSql
- 重启 mysql 服务
systemctl restart mysqld.service
- 使用新密码登录,运行脚本文件并设置远程登录权限
使用新密码登录mysql数据库
mysql -u root -p
创建并使用指定的数据库,运行/usr/local/dataSql目录下的脚本文件,如:创建并使用名为oop的数据库 ,使用base_standard.sql脚本文件
mysql>create database oop;
mysql>show databases ;
mysql>use oop;
mysql>source /usr/local/dataSql/base_standard.sql;
出现success等字样表示运行成功
设置远程登录权限
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql>exit;
3.常见问题
1.启动MySQL 失败,报“Can’t create/write to file ‘/var/lib/mysql/is_writable’ ,例如:
[root@SmartByDevServer ~]# 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.
[root@SmartByDevServer ~]# systemctl status mysqld.service
● mysqld.service - SYSV: MySQL database server.
Loaded: loaded (/etc/rc.d/init.d/mysqld; generated)
Active: failed (Result: exit-code) since Wed 2020-08-26 09:41:40 CST; 47s ago
Docs: man:systemd-sysv-generator(8)
Process: 12023 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1>
8月 26 09:41:38 SmartByDevServer systemd[1]: Starting SYSV: MySQL database serv>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: Initializing MySQL database: m>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: 2020-08-26T01:41:40.183736Z 0 [>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: 2020-08-26T01:41:40.185023Z 0 [>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: 2020-08-26T01:41:40.185033Z 0 [>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: [失败]
8月 26 09:41:40 SmartByDevServer systemd[1]: mysqld.service: Control process ex>
8月 26 09:41:40 SmartByDevServer systemd[1]: mysqld.service: Failed with result>
8月 26 09:41:40 SmartByDevServer systemd[1]: Failed to start SYSV: MySQL databa>
lines 1-15/15 (END)...skipping...
`mysqld.service - SYSV: MySQL database server.`
Loaded: loaded (/etc/rc.d/init.d/mysqld; generated)
Active: failed (Result: exit-code) since Wed 2020-08-26 09:41:40 CST; 47s ago
Docs: man:systemd-sysv-generator(8)
Process: 12023 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)
8月 26 09:41:38 SmartByDevServer systemd[1]: Starting SYSV: MySQL database server....
8月 26 09:41:40 SmartByDevServer mysqld[12023]: Initializing MySQL database: mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 ->
8月 26 09:41:40 SmartByDevServer mysqld[12023]: 2020-08-26T01:41:40.183736Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --ex>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: 2020-08-26T01:41:40.185023Z 0 [ERROR] --initialize specified but the data directory exists and is not writab>
8月 26 09:41:40 SmartByDevServer mysqld[12023]: 2020-08-26T01:41:40.185033Z 0 [ERROR] Aborting
8月 26 09:41:40 SmartByDevServer mysqld[12023]: [失败]
8月 26 09:41:40 SmartByDevServer systemd[1]: mysqld.service: Control process exited, code=exited status=1
8月 26 09:41:40 SmartByDevServer systemd[1]: mysqld.service: Failed with result 'exit-code'.
8月 26 09:41:40 SmartByDevServer systemd[1]: Failed to start SYSV: MySQL database server..
可以通过关闭selinux解决
2.启动MySQL 失败,报“ /usr/bin/mysqld_safe:行144: /var/log/mysqld.log: 权限不够“
[root@SmartByDevServer ~]systemctl status mysqld.service
● mysqld.service - SYSV: MySQL database server.
Loaded: loaded (/etc/rc.d/init.d/mysqld; generated)
Active: failed (Result: exit-code) since Wed 2020-08-26 14:15:37 CST; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 855 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)
8月 26 14:15:33 SmartByDevServer systemd[1]: Starting SYSV: MySQL database server....
8月 26 14:15:36 SmartByDevServer mysqld[855]: /usr/bin/mysqld_safe:行144: /var/log/mysqld.log: 权限不够
8月 26 14:15:36 SmartByDevServer mysqld[855]: /usr/bin/mysqld_safe:行144: /var/log/mysqld.log: 权限不够
8月 26 14:15:36 SmartByDevServer mysqld[855]: /usr/bin/mysqld_safe:行198: /var/log/mysqld.log: 权限不够
8月 26 14:15:36 SmartByDevServer mysqld[855]: /usr/bin/mysqld_safe:行144: /var/log/mysqld.log: 权限不够
8月 26 14:15:37 SmartByDevServer mysqld[855]: MySQL Daemon failed to start.
8月 26 14:15:37 SmartByDevServer mysqld[855]: Starting mysqld: [失败]
8月 26 14:15:37 SmartByDevServer systemd[1]: mysqld.service: Control process exited, code=exited status=1
8月 26 14:15:37 SmartByDevServer systemd[1]: mysqld.service: Failed with result 'exit-code'.
8月 26 14:15:37 SmartByDevServer systemd[1]: Failed to start SYSV: MySQL database server..
可能是目录 /var/run/mysqld或者文件/var/run/mysqld/mysqld.pid不存在,可通过重建目录或文件解决。
mkdir -p /var/run/mysqld
chown mysql.mysql /var/run/mysqld
尝试重启mysql,如果还不行,再重建mysqld.pid文件。
4.总结事项
MySQL安装目录为 /usr/local/mysql文件夹
MySQL脚本运行目录为 /usr/local/dataSql文件夹中的文件