linux部署mysql/及常见错误

linux部署mysql/
yum install mysql-server
报错没有可用软件包 mysql-server。
1.安装mysql服务:yum install mysql-server,执行时报错提示没有可用软件包 mysql-server。
先安装wget命令:yum install wget
2.下载相应rpm包即mysql的repo源
5.7源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 

3.安装。安装完可以进 /etc/yum.repos.d/ 目录下查看已有了mysql的yum repo源。

rpm -ivh mysql-community-release-el7-5.noarch.rpm

4.再次使用yum install mysql-server安装mysql

yum install -y mysql-server

5.启动mysql服务:

systemctl start mysqld.service

启动服务时卡住报错

systemctl start mysqld.service
Job for mysqld.service failed because a timeout was exceeded. See "systemctl status mysqld.service" and "journalctl -xe" for details.

后续启动无反应,并且查看启动状态时显示的为未启动成功

查看
6、查看服务状态

sudo systemctl status mysqld

7.登录mysql,yum安装的mysql是没有密码的,直接密码界面直接回车即可

 mysql -u root -p

8.修改mysql密码,执行后下次登录使用新密码即可

方式1
set password for root@localhost = password('root');

提示执行成功

8.1、修改密码时提示:MYSQL登录错误:mysqladmin: connect to server at ‘localhost’ failed
error: ‘Access denied for user ‘root’@‘localhost’ (using password: YES)’
先停止服务:

  service mysqld stop

在mysql中执行以下命令

 musqld_safe --skip-grant-tables &

输入回车进入

   mysql -uroot -p
use mysql;
update user set password=PASSWORD("root")where user="root";
更改密码为 newpassord
更新权限
flush privileges;    
退出
quit 
service mysqld restart
mysql -uroot -p 再使用新密码登录

9.使用以下命令或者source命令执行sql(任选其一),回车即可 (建议用客户端执行sql文件非服务器执行)

 mysql -uroot -p  数据库 名称r<sql文件名称.sql
 或
 source sql文件名称.sql

10.使用工具或者命令链接mysql时报错:ERROR 1130 (HY000): Host ‘20.10.10.224’ is not allowed to connect to this MySQL server
在这里插入图片描述
导致些问题可能有以下几个原因:

1、网络不通;

2、服务未启动;

3、防火墙端口未开放;
解决方法:
先使用:iptables -vnL,查看防火墙的状态,查看3306端口,如果3306如下,是drop状态,或者根本无3306端口,说明3306端口设置问题在这里插入图片描述
启动服务:service mysqld start;
开放防火墙端口,添加需要监听的端口:

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

开放后如下图
在这里插入图片描述
然后服务器上登录mysql服务,执行以下命令:

 mysql -u root -proot

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

然后再链接服务器提示 连接成功
在这里插入图片描述

安装8.0版本:
.下载 MySQL yum包
cd ~

wget http://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm

2.安装MySQL源

rpm -Uvh mysql80-community-release-el7-7.noarch.rpm

3.安装MySQL服务端

yum -y install mysql-community-server --nogpgcheck

4.启动MySQL

systemctl start mysqld.service

5.检查是否启动成功

systemctl status mysqld.service

6.获取临时密码,MySQL8.0为root用户随机生成了一个密码

grep 'temporary password' /var/log/mysqld.log

7、先修改一个满足规则的密码(如:Root_root123)。

 alter user 'root'@'localhost' identified by 'Root_root123';

执行命令后可以看到length和policy为8和MEDIUM

mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name               | ON     |
| 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      |
+-------------------------------------------------+--------+
8 rows in set (0.13 sec)

从上面的命名可以看到MySQL 8.0 调整了密码的验证规则,再次执行和查看,就可以修改密码长度和安全等级了

set global validate_password.policy=0;
set global validate_password.length=1;

授权其他机器远程登录

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

报错:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456' WITH GRANT OPTION' at line 1

依次执行:

use mysql;
select host, user, authentication_string, plugin from user;
#执行完上面的命令后会显示一个表格
#查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。

授权 root 用户的所有权限并设置远程访问
#GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。

mysql> grant all on *.* to 'root'@'%';
ERROR 1410 (42000): You are not allowed to create a user with GRANT


mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0
#再执行两次
grant all on *.* to 'root'@'%';

刷新授权

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

再次执行查看

mysql> select host, user, authentication_string, plugin from user;

你会发现 root 用户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。

卸载mysql
关闭MySQL服务

systemctl stop mysqld
用 rpm 命令查看已安装的安装包

rpm -qa|grep mysql

使用yum卸载安装的mysql

yum remove mysql mysql-server mysql-libs mysql-server

查询剩余的安装包(如果还有剩余挨个卸载)

rpm -qa|grep mysql

删除残余的安装包

rm -rf mysql*

继续查找是否还有残留文件

find / -name mysql

移除查询残留文件

#以实际查询到的为准
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql

mysql报错

1、修改mysql端口配置

vim /etc/my.cnf
添加端口参数
[mysqld]
port=3307 

修改mysql端口配置后报错 mysqld下加了个
port=3307,启动时报错

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.

查看运行状态

systemctl status mysqld.service

报错
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 六 2024-09-14 10:14:50 CST; 33s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 33663 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 33634 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 33663 (code=exited, status=1/FAILURE)
Status: “Server shutdown complete”
Error: 13 (权限不够)

9月 14 10:14:47 localhost.localdomain systemd[1]: Starting MySQL Server…
9月 14 10:14:50 localhost.localdomain systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
9月 14 10:14:50 localhost.localdomain systemd[1]: Failed to start MySQL Server.
9月 14 10:14:50 localhost.localdomain systemd[1]: Unit mysqld.service entered failed state.
9月 14 10:14:50 localhost.localdomain systemd[1]: mysqld.service failed.

用etenforce 命令来检查 SELinux 是否启用,如果结果是 Enforcing,则 SELinux 是启用的。可以使用 setenforce 0 命令临时禁用 SELinux,然后重启mysql成功:

systemctl start mysqld.service

需要安装 policycoreutils-python 包,它提供了创建和管理 SELinux 策略模块的工具。用以下命令安装:

sudo yum install policycoreutils-python

然后用 audit2allow 工具生成自定义策略模块。audit2allow 会读取 /var/log/audit/audit.log 文件中的消息,然后生成一个允许这些操作的策略模块。

sudo grep mysqld /var/log/audit/audit.log | audit2allow -M my_mysqld

这个命令会生成两个文件:my_mysqld.te 和 my_mysqld.pp。.te 文件是一个文本文件,包含了策略模块的源代码;.pp 文件是一个二进制文件,包含了编译后的策略模块。最后用 semodule 命令安装策略模块:

sudo semodule -i my_mysqld.pp

2.启动mysql时报错:

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.

查看一下mysql启动状态未启动成功

systemctl status mysqld.service

在这里插入图片描述
检查下端口有没有冲突

netstat -tulnp | grep 3306

在这里插入图片描述
看起来端口被占用了,可以停止占用端口的docker容器或者修改mysql端口,这次先修改mysql服务端口

vim /etc/my.cnf
在[mysqld]下增加
port=3307

重启mysql

systemctl restart mysqld 

3.mysql服务启动了,但是未完全启动,应该是端口号冲突了,

systemctl status mysqld

● mysqld.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: activating (start-post) since 五 2025-04-25 19:29:22 CST; 4min 28s ago
Process: 91772 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
Process: 91710 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 91772 (code=exited, status=0/SUCCESS); : 91773 (mysql-systemd-s)
Tasks: 2
Memory: 120.7M
CGroup: /system.slice/mysqld.service
└─control
├─91773 /bin/bash /usr/bin/mysql-systemd-start post
└─93103 sleep 1

4月 25 19:29:26 localhost.localdomain mysql-systemd-start[91710]: 2025-04-25 19:29:26 9174…
4月 25 19:29:26 localhost.localdomain mysql-systemd-start[91710]: 2025-04-25 19:29:26 9174…
4月 25 19:29:26 localhost.localdomain mysql-systemd-start[91710]: 2025-04-25 19:29:26 9174…
4月 25 19:29:26 localhost.localdomain mysql-systemd-start[91710]: 2025-04-25 19:29:26 9174…
4月 25 19:29:26 localhost.localdomain mysql-systemd-start[91710]: 2025-04-25 19:29:26 9174…
4月 25 19:29:28 localhost.localdomain mysql-systemd-start[91710]: 2025-04-25 19:29:28 9174…
4月 25 19:29:28 localhost.localdomain mysql-systemd-start[91710]: PLEASE REMEMBER TO SET A…
4月 25 19:29:28 localhost.localdomain mysql-systemd-start[91710]: To do so, start the serv…
4月 25 19:29:28 localhost.localdomain mysqld_safe[91772]: 250425 19:29:28 mysqld_safe Log…
4月 25 19:29:28 localhost.localdomain mysqld_safe[91772]: 250425 19:29:28 mysqld_safe Sta…l
Hint: Some lines were ellipsized, use -l to show in full.

改一下端口号,尝试重启后运行成功

systemctl status mysqld

尝试本地连接mysq时候报错,2002 - Can’t connect to server on ‘192.168.86.128’ (10060)
,查看了端口开放了,mysql服务也启动了,应该是 MySQL未激活密码复杂度校验插件。这是MySQL的安全增强模块,安装插件

动态安装(重启后失效)
INSTALL PLUGIN validate_password SONAME 'validate_password.so'; 
Query OK, 0 rows affected (0.03 sec)

步骤二:持久化配置(可选)

验证安装效果

SHOW VARIABLES LIKE 'validate_password%'; 

在这里插入图片描述
然后运行允许远程访问,上面有命令

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值