CentOS7下安装MySql
每次重装系统后安装MySQL,明明都是同一个iso,还是会出现不一样的问题。
CentOS7下安装MySql
写在前面:每次重装系统后安装MySQL,明明都是同一个iso,还是会出现不一样的问题。
1、卸载自带的MySQL或mariadb
查看mariadb
rpm -qa|grep mariadb
结果
# 如果有文件需要卸载会显示对应文件,卸载即可
mariadb-libs-5.5.56-2.el7.x86_64
# 如果没有文件则显示为空
卸载
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
查看MySQL,一般是没有的,只有mariadb
rpm -qa|grep mysql
卸载
rpm -e --nodeps 文件名
再次确认是否卸载
rpm -qa|grep mariadb
rpm -e --nodeps mysql80-community-release-el7-7.noarch
rpm -e --nodeps mysql-community-server-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-client-plugins-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-client-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-libs-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-common-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-icu-data-files-8.0.33-1.el7.x86_64
rpm -e --nodeps mysql-community-client-plugins-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-common-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-icu-data-files-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-libs-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-icu-data-files-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-client-plugins-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-server-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-common-8.0.35-1.el7.x86_64
rpm -e --nodeps mysql-community-client-8.0.35-1.el7.x86_64
2、提前安装需要用到的工具
2.1、安装yum
2.2、安装vim
yum install vim -y
2.3、安装wegt
yum install -y wget
另一个应用程序是:PackageKit
内存:156 M RSS (644 MB VSZ)
已启动: Tue Nov 7 15:54:12 2023 - 00:15之前
状态 :运行中,进程ID:2503
rm -f /var/run/yum.pid
3、安装MySQL
- mysql-community-server(服务端)
- mysql-community-client(客户端)
- mysql-community-client-plugins
- mysql-community-common(错误消息、字符集等)
- mysql-community-libs (客户端库文件)
- mysql-community-libs-compat
用wget 下载后安装
wget http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
安装MySQL官方的 Yum Repository
yum install mysql80-community-release-el7-7.noarch.rpm
安装MySQL服务器
yum install mysql-community-server
启动Myqsl服务
systemctl start mysqld.service
查看运行状态
systemctl status mysqld.service
service mysqld status
查看MySQL版本
# 用密码进入是会显示版本,我的版本是8.0.32
mysql -V
## 也可以打印详细信息
4、设置MySQL
4.1、设置密码
获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 或者,两句的结果都是一样的
grep "password" /var/log/mysqld.log
结果
A temporary password is generated for root@localhost: >a6Ttpg#qpcz
登录方法(利用原始的密码进入)
mysql -uroot -powDsnCkJg4>g
mysqladmin -u root -h 127.0.0.1 -p password
如果当前进不去的话,需要使用先输入mysql -uroot -p
,再输入临时密码。
如果还是进不去的话,可能是除了某种原因。此时可以利用MySQL跳过验证的方式登录。
1、cd etc
2、vim my.cnf
3、找到[mysqld]字段,新增skip-grant-table,保存
4、重启MySQL服务,systemctl restart mysqld,
service mysqld restart
此时的密码是需要密码满足至少要有一个大写字母,一个小写字母,一个数字,一个特殊符号,并且长度至少为八位。
可能第一次登录需要重新设置密码(建议用MySQL提供的默认密码先设置好,等后面再修改为123456)
ALTER USER 'root'@'localhost' IDENTIFIED BY '>a6Ttpg#qpcz';
我们将密码设置为校验级别低,长度只有6位的密码,方便我们学习。
如下命令查看mysql默认密码复杂度:
SHOW VARIABLES LIKE 'validate_password%';
返回结果:
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.changed_characters_percentage | 0 |
| validate_password.check_user_name | ON |#判断账号密码进行比较,on则不能设置为相同值
| validate_password.dictionary_file | |#用于检查密码的字典文件的路径名
| validate_password.length | 8 |#需要密码的最少字符数
| validate_password.mixed_case_count | 1 |#密码混合强度
| validate_password.number_count | 1 |#密码最小字符
| validate_password.policy | MEDIUM |#密码强度
| validate_password.special_char_count | 1 |#密码最小非字母数字字符
+--------------------------------------+--------+
7 rows in set (0.02 sec)
如需修改密码复杂度参考如下命令:
set global validate_password.policy=LOW;
修改密码长度
set global validate_password.length=6;
值得注意的是,有版本的字段是validate_password_length,而有的是validate_password.length,大家在设置的时候需要根据自己的需要进行修改
设置完密码策略后,刷新数据库权限
flush privileges;
查看数据库密码策略
SHOW VARIABLES LIKE 'validate_password%';
结果
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 6 |修改完成
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
修改完成。
此时可以重新设置简单的密码,一旦修改后,初始化密码虽然查得到,但是进入MySQL服务的密码将是为你自定义的密码’123456’
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
4.2、设置开机自启动
systemctl enable mysqld.service;
4.3、设置远程连接
5版本
执行以下命令开启远程访问限制(注意:密码要写对 要不然远程链接不上 下面命令开启的所有的,如要开启单个的,用IP代替%):
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
或
grant all privileges on *.* to root @ '%' identified by '123456';
注:123456是你设置你的mysql远程登录密码。
- GRANT:赋权命令
- ALL PRIVILEGES:当前用户的所有权限
- ON:介词
- .:当前用户对所有数据库和表的相应操作权限
- TO:介词
- ‘root’@’%’:权限赋给root用户,所有ip都能连接
- IDENTIFIED BY ‘123456’:连接时输入密码,密码为123456
- WITH GRANT OPTION:允许级联赋权
然后再刷新
flush privileges
8版本
方式一
输入以下语句,进入mysql库:
use mysql
更新域属性,'%'表示允许任意IP地址访问:
update user set host='%' where user ='root';
执行以上语句之后再执行:
FLUSH PRIVILEGES;
再执行授权语句:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
方式二
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;
这一行命令来设置用户权限,必须分两步来实现设置用户权限【先创建用户、在对该用户分配用户权限】,最后刷新权限
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
4.4、设置防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
Warning: ALREADY_ENABLED: 3306:tcp(说明3306端口通过成功)
重启防火墙
firewall-cmd --reload
5、测试连接
用ifconfig找到CentOS7的IP
利用数据库可视化工具连接MySQL即可,将localhost换为CentOS7的IP,其他的不变
6、异常
6.1、初始化密码可能遇到的异常
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- 密码不符合密码设置策略
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- 执行下一步前请设置密码
运行SHOW VARIABLES LIKE 'validate_password%';
查看mysql默认密码复杂度时会报ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
异常,这是需要你在执行下一句语句前重设你的密码;继续输入ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
则会出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
提示你密码不符合要求;运行set global validate_password.policy=LOW;
设置密码策略还是在提示需要重新设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'et+cZllT7jtw1';
执行该语句后,再按上面顺序继续设置密码
6.2、远程连接可能遇到的问题
- ERROR 1410 (42000): You are not allowed to create a user with GRANT
- ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘identified by ‘123456’ with grant option’ at line 1
- 设置远程连接可能出现语法错误
选择 mysql 数据库
use mysql;
查看mysql 数据库中存储的用户信息的 user 表。
select host,user,authentication_string,plugin from user;
执行完命令后显示一个表格, root 用户的 host默认显示的 localhost,说明只支持本地访问,不允许远程访问。
更改 host 的默认配置
update user set host='%' where user='root';
刷新更新
flush privileges;
上述步骤完成之后,相当于完成了设置远程连接,回去上述步骤执行下一步。
6.3、Failed to start mysqld.service: Unit not found
这个异常的原因是因为安装MySQL的部分操作没有完全执行,只需要重新执行一边一句即可。
6.4、如果需要创建账号才可以进行远程连接
运行这条语句会报错
grant replication slave on *.* to 'xh'@'%' identified by '123456';
换个方法
create user xh identified by '123456';
grant select ,replication slave, replication client on *.* to 'xh'@'%';
grant all privileges on *.* to 'xh'@'%';
flush privileges;
6.5、“MySQL 8.0 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包
源 “MySQL 8.0 Community Server” 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是:mysql-community-client-8.0.36-1.el7.x86_64 GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022, file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
sudo yum install mysql-server --nogpgcheck
文章参考或者引用
MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)