最近开了一台阿里云的云服务器,装Mysql的时候走了不少弯路,这篇文章记录了作者本人再搭建Mysql过程中走的坑,希望能帮到学习的你。
部署环境:CentOS Linux release 7.9.2009 (Core)
部署内容:Mysql
1.删除原来的数据库,centos7中默认安装了数据库MariaDB,如果直接安装MySQL的话,会直接覆盖掉这个数据库,手动删除一下:
[root@iZbp111twx67tany7mggtbZ ~]# sudo rpm -qa|grep mariadb // 查询出来已安装的mariadb
[root@iZbp111twx67tany7mggtbZ ~]# sudo rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件
2.下载,安装Mysql
[root@iZbp111twx67tany7mggtbZ ~]# sudo wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm --获取官方的rpm,这是Mysql5.7的
[root@iZbp111twx67tany7mggtbZ ~]# sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm --这是Mysql8.0的
[root@iZbp111twx67tany7mggtbZ ~]# sudo yum -y install mysql57-community-release-el7-10.noarch.rpm --安装发布包
[root@iZbp111twx67tany7mggtbZ ~]# sudo yum -y install mysql-community-server --安装Mysql服务
如果出现Complete ,则表示安装成功
3.安装成功后,启动Mysql服务
[root@iZbp111twx67tany7mggtbZ ~]# sudo systemctl start mysqld.service --启动Mysql
[root@iZbp111twx67tany7mggtbZ ~]# sudo systemctl status mysqld.service --查看Mysql状态
4.启动之后,进入Mysql
第一次启动MySQL后,会有临时密码,这个默认的初始密码在/var/log/mysqld.log文件中,用下面这个命令来查看:
[root@iZbp111twx67tany7mggtbZ ~]# sudo grep "password" /var/log/mysqld.log
然后进入之后,修改密码
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('密码') where user='root';
如果出现如下错误
执行修改密码语句
mysql> set password = password('自己的密码'); --Mysql5.7
mysql> ALTER USER '自己的用户名'@'localhost' IDENTIFIED BY '自己的密码'; --Mysql8.0
5.重新用新密码进入Mysql
6.配置远程登陆
*.*的意思是所有库的所有表;TO后面跟的是用户名;@后面跟的是ip地址,%代表所有ip地址,IDENTIFIED BY后面的是密码。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '自己的密码' WITH GRANT OPTION; --Mysql5.7
在MySQL 5.7及更高版本中,GRANT命令的语法发生了变化,不再支持直接在GRANT命令中使用IDENTIFIED BY语句来设置密码。应先使用CREATE USER命令创建用户并设置密码,再使用GRANT命令分配权限。
解决方法如下:
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '自己的密码'; --创建用户并设置密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; --分配权限。
mysql> FLUSH PRIVILEGES; --执行命令使更改生效:
这样,用户root就能从任何主机连接到MySQL服务器,并拥有所有权限。
刷新Mysql系统权限相关表
mysql> flush privileges;
到这里就配置好了。
修改数据库编码规则,打开/etc/my.cnf,也就是数据库的配置文件,然后在底部复制粘贴:
character_set_server=utf8
init_connect='SET NAMES utf8'
***阿里云的服务器中的防火墙加入mysql连接的规则。这个很重要,不然远程无法连接上。
Tips:第一步下载的官网的发布包,建议删除,因为会自动更新
[root@iZbp111twx67tany7mggtbZ ~]# sudo yum -y remove mysql57-community-release-el7-10.noarch
文件说明:
/etc/my.cnf--------------------mysql的主配置文件
/var/lib/mysql mysql--------数据库的数据库文件存放位置
/var/log mysql----------------数据库的日志输出存放位置
一些常用的命令:
sudo rpm -qa | grep mysql --查看已经安装的mysql
sudo rpm -e mysql57-community-release-el7-10.noarch --有安装的话,清楚已安装的 卸载指定文件
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm --从官网获取发布包
sudo yum -y install mysql57-community-release-el7-10.noarch.rpm --安装mysql发布包
sudo rpm -e install mysql57-community-release-el7-10.noarch.rpm --卸载发布包
sudo yum -y install mysql-community-server --安装mysql
sudo systemctl start mysqld.service --启动mysql服务
sudo systemctl restart mysqld.service --重启Mysql服务
sudo systemctl stop mysqld.service --停止Mysql服务
sudo systemctl status mysqld.service --查看mysql服务状态
sudo systemctl enable mysqld --配置Mysql开机启动
mysql -u root -p --Mysql登录(root登录,输入密码)
sudo systemctl daemon-reload // 刚配置的服务需要重新加载配置。
sudo rpm -qa gpg-pubkey* --查看系统已安装的GPG密钥
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 --导入适合自己的密钥命令
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 --Mysql8.0公钥
sudo rpm --rebuilddb --更新RPM包数据库 然后再重新安装
sudo yum clean all
sudo yum makecache --清除缓存
cat /etc/redhat-release --查看系统版本
vi 文件路径/文件名 --进入编辑模式
输入i 进入Insert
编辑之后,按下Esc,输入:wq! 回车,保存退出