如果以前有mysql版本,可以想用这些命令清理旧版本
sudo yum list installed | grep mysql
sudo yum remove mysql80-community-release.noarch
sudo yum clean all --verbose
sudo rm -R /var/cache/yum/x86_64/7/mysql*
sudo yum update
正式开始
第一步: 这个命令的目的是在系统中安装或更新 MySQL 存储库的配置文件,以便通过 Yum 来方便地管理 MySQL 的安装和更新。
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
第二步:这个命令的目的是将 MySQL 存储库的 Yum 配置文件中的 enabled=1 的部分替换为 enabled=0,意味着禁用这个存储库,从而防止系统在更新时从该存储库中获取软件包。
sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo
第三步:使用yum安装mysql8
yum --enablerepo=mysql80-community install mysql-community-server
并没有安装成功,报错了,但是这是正常的
The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
Failing package is: mysql-community-client-plugins-8.0.35-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
第四步:导入 MySQL 存储库的 GPG 密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
第五步:重新执行第三部命令
yum --enablerepo=mysql80-community install mysql-community-server
没有错误,提示complete!
第六步:验证mysql存在
mysql -V
显示这个证明mysql安装好了
mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
第七步: 以管理员权限,开启mysql服务,mysqld是mysql的守护进程, start是开启,status是查看,systemctl是命令工具
sudo systemctl start mysqld
sudo systemctl status mysqld
第八步:设置mysql密码,输入mysql,mysql -u root -p 都是报权限不足。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
第九步:上面的命令意味着你的系统已经生成了临时密码,使用这行命令找到临时密码
grep 'temporary password' /var/log/mysqld.log
出现了一行日志:
2023-12-27T10:38:17.676776Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xiuma6b#ahyQ
root@localhost: 后面就是临时密码。使用mysql -u root -p 然后输入密码 xiuma6b#ahyQ
登录成功。
第十步:修改密码,使用FLUSH PRIVILEGES;刷新权限,可以用Navicat远程连接看看
ALTER USER 'root'@'localhost' IDENTIFIED BY '*********';
FLUSH PRIVILEGES;
报错
1130 - Host '***.***.***.***' is not allowed to connect to this MySQL server
原因是mysql的root用户只添加了本地访问的权限,可以用查看
SELECT host FROM mysql.user WHERE User = 'root';
返回
+-----------+
| host |
+-----------+
| localhost |
+-----------+
1 row in set (0.00 sec)
第十一步:通常来说root仅限本机连接就行,可以添加 root可以改成一个新用户比如tiger,ip_address改成你的ip地址,some_pass改成你的登录密码,*.*代表所有权限暂时可以这么设置,毕竟现在只有利用
CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address' WITH GRANT OPTION;
第一句正常执行,然后可以使用navicat远程连接服务器mysql,账号是root 第二句报错:
(`ERROR 1410 (42000): You are not allowed to create a user with GRANT`).
这报错表示:user需要先被创建出来才能被grant权限
第十二步: 既然all PRIVILEGES不行,那就一个一个加
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`ip_address` WITH GRANT OPTION;
navicat远程连接成功并创建了表。这相当于授权最高权限了,除了创建者不要这么做。