1. 下载
https://dev.mysql.com/downloads/
使用wget下载yum的源信息:
wget -i -c https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
或者直接下载rpm安装包
链接地址:
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-server-8.0.26-1.el7.x86_64.rpm
注意都是rpm结尾,但是文件大小相差比较大,yum源的rpm安装包只有几十K,真正的RPM安装包是几百兆。
2. 安装
2.1卸载历史版本mysql
以及mariadb
# 查询
rpm -qa|grep mysql
rpm -qa|grep mariadb
# 移除
rpm -ev [需要移除组件的名称]
rpm -e --nodeps [需要移除组件的名称] //此命令为强制卸载
# 或者用yum移除
yum remove
2.2 使用yum源信息安装
# repo的安装,执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
cd /etc/yum.repos.d/
# 注意:必须进入到/etc/yum.repos.d/目录后再使用yum命令进行安装
yum -y install mysql-server
# 如果报错误Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY,加上force和nodeps参数即可
# 例如:
rpm -ivh mysql-community-server-8.0.25-1.el8.x86_64.rpm --force --nodeps
2.3 使用rpm直接安装
如果报错误Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY,加上force和nodeps参数
安装服务端:
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm --force --nodeps
安装客户端:
rpm -ivh rpm包
* 安装common包
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
* 安装类库
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm --force --nodeps
* 安装客户端(前两个是其依赖)
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
2.4 查看安装后的信息
# 查看服务状态,可能没启动
systemctl status mysqld
# 启动服务
systemctl start mysqld
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
mysqladmin --version
2.5 初始化mysql
# 创建数据文件目录和mysql系统数据库 产生随机root密码
mysqld --initialize
查看初始密码:
cat /var/log/mysqld.log | grep password
或
grep 'temporary password' /var/log/mysqld.log
修改密码:没有经过测试。
复制 root@localhost: 后面的密码。登录mysql,并粘贴默认密码
因为MySQL8.0的更改,导致必须要重置密码
alter user 'root'@'localhost' identified by '12345678';
如果设置密码时候出现提示
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
代表需要降低policy的等级后在执行
set global validate_password.policy=0;
开启MySQL远程连接
use mysql;
#修改root账户权限
update user set host = '%' where user = 'root';
#刷新权限
flush privileges;
2.6 安全设置
mysql_secure_installation
# 提示如下步骤:
1. 输入初始密码;
2. 提示root密码过期,需要修改密码,这是mysql8的提示,输入两次密码确认;
3. 提示是否更改root密码,这步其实重复了;
4. 是否删除匿名用户,建议删除;
5. 是否禁用root账户的远程登录,建议禁用,即mysql的root只可以本机登录;
6. 是否删除test数据库,建议删除;
7. 是否重新加载权限表,选y。
2.7 mysql登录
# 输入刚才修改后的密码
mysql -uroot -p
2.8 重置密码(Mysql8.0+有变化)
先把root的旧密码置空(这个步骤可以不做)
use mysql;
update user set authentication_string='' where user='root';
# 备注:Mysql5.7+ password字段 已改成 authentication_string字段
重置成新密码:
alter user 'root'@'localhost' identified by 'newpassword';
# 备注:Mysql8.0修改密码方式已有变化(此处是个坑,需要注意)
# Mysql8.0之前:
update user set password=password('root') where user='root';
重新登录:
mysql -uroot -pnewpassword
2.9 如何停止、重启和查看mysql服务
systemctl stop mysqld //停止服务
systemctl restart mysqld //重启服务
systemctl status mysqld //查看服务
2.10 mysql相关目录
# 相关命令
/usr/bin
# 配置文件目录
/usr/share/mysql
# 数据库文件存放目录
/var/lib/mysql
# mysql的启动配置文件
/etc/my.cnf
其他:
my.ini # windows操作系统下的配置文件
my.cnf # linux操作系统下的配置文件
mysqld # 是后台守护进程,即mysql daemon
mysql # 是客户端命令行
3. 创建用户和数据库
3.1 创建用户
用户名:wood,密码:PWDwooddb_2021,可以从任何地址登入。
create user 'wood'@'%' identified by 'PWDwooddb_2021'
3.2 创建数据库wood_db;
create database wood_db;
3.3 授权
常用授权语句
GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 对某个特定数据库中的特定表单给予授权。
GRANT 权限 ON 数据库.* TO 用户名@主机名 对某个特定数据库中的所有表单给予授权。
GRANT 权限 ON *.* TO 用户名@主机名 对所有数据库及所有表单给予授权。
GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 对某个数据库中的所有表单给予多个授权。
GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 对所有数据库及所有表单给予全部授权。
授权wood用户所有wood_db的权限
grant all on wood_db.* to 'wood'@'%';
查看用户授权
show grants for wood@'%';
+---------------------------------------------------+
| Grants for wood@% |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO `wood`@`%` |
| GRANT ALL PRIVILEGES ON `wood_db`.* TO `wood`@`%` |
+---------------------------------------------------+
2 rows in set (0.00 sec)
如果修改没有生效,考虑使用flush privileges命令刷新权限信息。