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%';
然后运行允许远程访问,上面有命令