MySQL详细安装与配置:Linux
本文最后更新于 2024-08-22,文章内容可能已经过时。
MySQL配置与安装
安装
查看是否已经安装了MySQL
rpm -qa | grep mysql
如果什么都没有,就是还没有装过MySQL
[root@10-50-132-197 ~]# rpm -qa | grep mysql
[root@10-50-132-197 ~]#
下载MySQL安装包
# mysql5.7
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装mysql包
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装MySQL
yum -y install mysql-community-server
出现这个报错,解决方法:需要禁掉GPG验证检查,执行下面的命令
yum -y install mysql-community-server --nogpgcheck
启动MySQL服务
systemctl start mysqld.service
[root@localhost ~]# systemctl start mysqld.service
[root@localhost ~]#
查看服务状态
service mysqld status
上图这样就是启动成功了
查看MySQL初始密码
grep "password" /var/log/mysqld.log
登录数据库
mysql -u root -p
修改MySQL默认密码
#修改密码安全策略为低(只校验密码长度,至少8位)
set global validate_password_policy=0;
#修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
未修改默认密码不能操作数据库
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
授予root用户远程管理权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';
退出数据库
exit
Linux远程访问配置
网络连接和端口开放
使用ping命令查看服务器网络是否连接
使用telnet命名查看数据库端口是否开放(默认3306)
telnet 10.50.132.197 3306
端口未开放解决方法:
关闭防火墙
systemctl stop firewalld
开放端口
开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新载入一下防火墙设置,使设置生效
firewall-cmd --reload
可通过如下命令查看是否生效
firewall-cmd --zone=public --query-port=3306/tcp
查看系统所有开放的端口
firewall-cmd --zone=public --list-ports
MySQL配置
如果开放了防火墙,还是不能连接,通过netstat查看3306的端口状态:
netstat -apn|grep 3306
tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld
如果IP未127.0.0.1则说明3306端口被绑定到了本地,不能远程访问
解决方法
更新配置文件
MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下;
在Linux下叫my.cnf,该文件位于/etc/my.cnf
。
可以查找下:find / -name my.cnf
通过 rpm 命令安装的 MySQL 是没有 /etc/my.cnf
文件的,如果需要配置 MySQL,可以在/etc/my.cnf
新建配置文件,然后把配置信息复制到文件中即可。
通过更新配置文件 bind-address
的值更改MySQL端口绑定
不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。
[mysqld]
port=3306
bind-address=0.0.0.0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
确认端口状态
[root@10-50-132-197 etc]# netstat -apn|grep 3306
tcp6 0 0 :::3306 :::* LISTEN 12284/mysqld
tcp6 0 0 10.50.132.197:3306 10.11.33.64:51808 ESTABLISHED 12284/mysqld
用户访问权限
MySQL建用户的时候会指定一个host指定允许访问的主机
默认是127.0.0.1/localhost,表示只能本地访问
host改为%,表示允许所有机器访问
查看用户访问权限
在mysql
数据库user
表中记录了所有用户信息
use mysql;
select host,user from user;
更改用户访问权限
使用用户授权命令
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';
直接修改表的值
update user set host=’%’ where user=’root’;
端口号设置
查看端口号
show global variables like 'port';
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
修改端口号
mysql 默认端口号: 3306
编辑配置文件
编辑配置文件 port
属性值设置端口号
配置文件:/etc/my.cnf
重启服务
更改配置文件后需要重新启动mysql服务才能生效
systemctl restart mysqld
[mysqld]
port=3307
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
重启服务时遇到报错
[root@localhost ~]# systemctl restart mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
此时mysql已经停止,但是重启失败了
把配置文件中的端口号删掉就又能启动
查看了端口号,并没有被占用
解决:
是因为启动了SELinux
临时关闭,再重新启动即成功
setenforce 0
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start mysqld
如需永久关闭要修改/etc/selinux/config 配置文件,并重启系统
将SELINUX=enforcing改为SELINUX=disabled