一,卸载MySql
1、查看系统中是否已安装mysql
rpm -qa |grep mysql
注:返回空值说明没有安装mysql,在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL 。
2、查看mariadb版本
rpm -qa|grep -i mariadb
3、卸载mariadb
rpm -e --nodeps 软件名称
4、确认是否卸载完成
rpm -qa|grep -i mariadb
二,安装MySql
1、下载安装包文件
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
注:如果显示没有wget命令,执行下方代码下载,遇到y/n输出y回车;
下载完成后执行上方代码下载安装包文件
sudo yum install wget
2、安装mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el6-5.noarch.rpm
安装完成之后,会在 /etc/yum.repos.d/ 目录下新增 mysql-community.repo 、mysql-community-source.repo 两个 yum 源文件。
执行 yum repolist all | grep mysql 命令查看可用的 mysql 安装文件。
3、安装mysql
yum install -y mysql-server
chown mysql:mysql -R /var/lib/mysql
mysqld --initialize
4、查看是否安装成功
rpm -qa | grep mysql
三,常用命令、设置密码
常用命令
systemctl start mysqld.service #启动 mysql
systemctl restart mysqld.service #重启 mysql
systemctl stop mysqld.service #停止 mysql
systemctl enable mysqld.service #设置 mysql 开机启动【重启生效】
systemctl disable mysqld #关闭MySQL开机启动【重启生效】
ps -ef | grep -i mysql #查看mysql进程
mysql常用文件路径:
/etc/my.cnf 这是mysql的主配置文件
/var/lib/mysql mysql 数据库的数据库文件存放位置
/var/logs/mysqld.log 数据库的日志输出存放位置
设置密码
mysql5.6 安装完成后,它的 root 用户的密码默认是空的,我们需要及时用 mysql 的 root 用户登录(第一次直接回车,不用输入密码),并修改密码
# systemctl start mysqld.service
# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("123456") where User='root';
mysql> flush privileges;
四,远程访问
准备工作
Linux是一个安全级别很高的操作系统,所以对外的访问是需要权限的。如端口。默认只开放了80和22端口
1,打开防火墙,使用 ss 命令检查开放端口,建议-ltn在命令中使用选项以查看简洁且相关的输出。让我们看一个关于我们的测试系统的例子。(这里需要退出mysql)
quit #退出mysql
sudo ss -ltn #查看端口
我们可以看到我们的服务器正在侦听端口 80、3306 上的连接。这些是众所周知的与 HTTP 和 MySQL 相关的端口。
2,检查 ufw 防火墙中打开了哪些端口
你应该记住一个重要的警告。在我们的本地系统上使用ss或者nmap localhost命令时,我们绕过了防火墙。实际上,这些命令显示处于侦听状态的端口,但这并不一定意味着端口对 Internet 开放,因为我们的防火墙可能拒绝连接。使用以下命令检查 ufw 防火墙的状态。
sudo ufw status verbose
如果没有ufw命令,执行下方代码后再执行sudo ufw status verbose
sudo yum install ufw
如果显示没有可用软件包执行下方代码再执行上面的两个
安装epel源
sudo yum install epel-release
清理缓存
yum clean all
重新生成缓存
yum makecache
升级yum源
yum uptade
从输出中,我们可以看到 ufw 拒绝传入连接。由于端口 3306 尚未添加为例外,因此 MySQL 无法接收传入连接,尽管ss并nmap报告它们处于侦听状态。
3,为这些端口添加例外。
sudo ufw allow 3306/tcp
如果80没开,同样操作
sudo ufw allow 80/tcp
我们可以再次检查 ufw 的状态,以查看端口现在是否已打开。
开启远程访问
mysql> grant all on *.* to 'root'@'%' identified by '123456';
mysql> flush privileges;
确认:查看user对应root的host是否为%
select host,user from user;
测试远程访问
可以用Navicat输入mysql> grant all on *.* to 'root'@'%' identified by '123456';这个命令对应的账号密码,
账号root 密码123456
ip根据自身ip填写(可以使用ifconfig查看)
如果不行可以关闭防火墙试试 systemctl stop firewalld(亲测有效)
常见问题:
mysql修改密码后无法登陆
systemctl stop mysqld
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
systemctl restart mysqld
若启动报错,`ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)`
查看mysql是否已启动过,
ps -ef |grep mysql查看,若有进程存在,
kill pid 后重启mysql
mysql -uroot -p
Enter password: <输入新设的密码newpassword>
防火墙命令
操作 | 指令 | 备注 |
查看防火墙状态 | systemctl status firewalld / firewall-cmd --state | |
暂时关闭防火墙 | systemctl stop firewalld | |
永久关闭防火墙(禁用开机自启) | systemctl disable firewalld | 下次启动,才生效 |
暂时开启防火墙 | systemctl start firewalld | |
永久开启防火墙(启用开机自启) | systemctl enable firewalld | 下次启动,才生效 |
开放指定端口 | firewall-cmd --zone=public --add-port=8080/tcp --permanent | 需要重新加载生效 |
关闭指定端口 | firewall-cmd --zone=public --remove-port=8080/tcp --permanent | 需要重新加载生效 |
立即生效(重新加载) | firewall-cmd --reload | |
查看开放端口 | firewall-cmd --zone=public --list-ports |