目录
1.3 下载并安装MySQL官方的 Yum Repository
2.3 没获取到密码->修改mysql的配置文件 --> 跳过权限
1 安装完mysql 直接无密码进入 -> set 密码后 处于无权限状态 各种报错
1 mysql安装
1.1 删 mariadb / 自带MySQL
--> 1 查看
rpm -qa | grep mariadb
yum list installed | grep mysql
--> 删 rpm -e --nodeps 查出来的名字 -->如下
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
yum -y remove mysql-libs.x86_64
1.2 安装wget命名
yum install wget -y
1.3 下载并安装MySQL官方的 Yum Repository
wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum install mysql-community-release-el6-5.noarch.rpm -y
1.4 使用yum安装mysql
yum install mysql-community-server -y
2 mysql 配置
2.1 启动
service mysqld start
chkconfig mysqld on --> 开机启动
service mysqld status --> 查看状态
service mysqld restart --> 重启
2.2 获取密码
grep "password" /var/log/mysqld.log
2.3 没获取到密码->修改mysql的配置文件 --> 跳过权限
vim /etc/my.cnf
--> 在文件末尾加上
skip-grant-tables
--> 重启
service mysqld restart
2.4 登录 -> 不输入密码按回车登录
mysql -uroot -p
-> 进入修改密码
update mysql.user set password=password('root') where user='root';
2.5 修改mysql的配置文件 --> 恢复权限
vim /etc/my.cnf
--> 在文件末尾删掉
skip-grant-tables
--> 重启
service mysqld restart
systemctl restart mysqld.service // 区别与mysqlsystemctl restart mysql
2.6 设置远程连接
2.6.1 修改配置文件
cd /etc/msyql
vim my.cnf
文件末尾添加
port = 3306
bind-address = 0:0:0:0
# 如果是生产服务器,要谨慎允许来自任何IP(0.0.0.0)的连接。如果可能的话,应该限制它只能接受特定IP地址的连接。
2.6.2 sql 命令
select host,user,plugin,authentication_string from mysql.user; -->查看账户
grant ALL on *.* to `root`@`%` identified by 'root' with grant option;--> 授权全部ip可访问
set password for root@'%' =password('root'); --> 不确定是没刷新还是 必须要重置密码 不然连不上
flush privileges; --> 刷新
为什么要set password for root@'%' =password('root');
如果
select host,user,plugin,authentication_string from mysql.user;
结果是
+-----------+------+-------------+-----------------------+
| host | user | plugin | authentication_string |
+-----------+------+-------------+-----------------------+
| localhost | root | unix_socket | |
| % | gpt | | |
+-----------+------+-------------+-----------------------+
根据你提供的MySQL用户表中的信息,看起来有一个名为"gpt"的用户,它被允许从任何主机(host字段为 "%")连接到MariaDB数据库。然而,这个用户的"plugin"字段是空的,这意味着它可能不能使用标准的用户名和密码进行远程连接。
用户的"plugin"字段为"unix_socket"时,通常意味着该用户使用Unix套接字认证而不是密码认证。这种情况下,用户不需要密码,而是依赖于系统上的用户名来进行认证。这通常用于本地连接,而不是远程连接。
如果你希望"gpt"用户能够进行远程连接并使用用户名和密码进行认证,你需要修改该用户的"plugin"和"authentication_string"字段。你可以使用以下SQL命令来更改它:
ALTER USER 'gpt'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'your_password_here';
没有成功换成
set password for gpt@'%' =password('root');
MariaDB [mysql]> select host,user,plugin,authentication_string from mysql.user;
+-----------+------+-----------------------+-------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------+-----------------------+-------------------------------------------+
| localhost | root | unix_socket | |
| % | gpt | mysql_native_password | *08F91414216A75 |
+-----------+------+-----------------------+-------------------------------------------+
根据你提供的MySQL用户信息,对于用户"gpt"来说,它具有从任何主机(host字段为"%")远程访问MySQL的权限。这是因为host字段的值为"%"表示该用户可以从任何主机连接到MySQL服务器,而不仅仅是localhost(即本地主机)。
但是需要注意的是,虽然用户"gpt"具有远程访问的权限,但其认证插件(authentication plugin)是"mysql_native_password",这通常需要用户名和密码来进行身份验证。你的输出中并没有显示"gpt"用户的密码哈希值,因此在实际使用中,你需要为"gpt"用户设置一个密码,以便可以使用用户名和密码来连接到MySQL服务器。
如果你希望进一步限制"gpt"用户的权限或者添加更多的安全性,可以考虑限制它的访问主机,只允许特定IP地址或IP地址范围的主机连接。
GRANT ALL ON msg TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
这个SQL语句指定了对名为"msg"的数据库执行权限操作。具体来说,这个语句做了以下几件事情:
GRANT ALL:这部分表示授予所有权限,包括SELECT、INSERT、UPDATE、DELETE等数据库操作权限。
ON msg:这部分指定了权限应用在名为"msg"的数据库上。
TO 'root'@'%':这部分指定了权限被授予给用户名为'root',并且允许从任何主机('%'表示所有主机)连接到数据库的用户。
IDENTIFIED BY 'root':这部分设置了用户'root'的密码为'root'。
WITH GRANT OPTION:这部分允许用户'root'将他们被授予的权限再授予其他用户。
总之,这个SQL语句在数据库"msg"上授予了用户'root'几乎所有的权限,并且允许他们将这些权限传递给其他用户。但是请注意,GRANT权限是一个敏感操作,应该谨慎使用,确保只授予必要的权限给需要的用户。此外,为了安全考虑,密码应该更加复杂而不是像这个例子中设置为简单的'root'。
2.7 服务器 防火墙 或 安全组 开通指定端口
2.8 服务器安装防火墙并开通指定端口
yum install firewalld -y // 安装防火墙
systemctl start firewalld.service // 开启
systemctl enable firewalld.service // 开机自启
firewall-cmd --zone=public --add-port=3306/tcp --permanent // 打开指定端口
firewall-cmd --list-ports --permanent // 查看永久打开的端口
systemctl restart firewalld.service // 重启
3 查看日志
cd /var/log
vim mysqld.log
3.1 正确log
3.2 错误log --> 不影响
4 设置慢查询日志
4.1 查看参数 >mysql 中
show global status like 'slow_queries'; #显示慢查询次数
show variables like 'long_query_time' ; #显示慢查询时间;
show variables like 'slow_query_log' ; #显示慢查询日志是否开启
4.2 mysqld (区别mysql) 配置文件修改参数
vim /etc/my.cnf
--> 加入
[mysqld] // 不是在 [mysqld_safe] 下 不要写错位置
log-slow-queries = /var/lib/mysql/slow-queries.log
slow_query_log = 1
long_query_time = 0.05
4.3 查看日志
cd /var/lib/mysql --> 找到日志文件夹
ll --> 竖向列表 查看 文件夹内容
f1d4d1e68e1a-slow.log --> 系统自动生成的慢查询日志名
tail -f f1d4d1e68e1a-slow.log --> 启动实时查看日志 有变动就会显示
5 参考
5.1 mysql安装
https://www.cnblogs.com/CNRF/p/14862890.htmlhttps://www.cnblogs.com/CNRF/p/14862890.html