linux环境下安装MySQL (以Centos7为例)
通过RPM命令检查是否存在mysql
rpm -qa | grep mysql //
//存在可以采用
rpm -e filefullname//文件全名删除
通过Mariadb来安装MySQL
通过mysql的yum repository来安装
这种安装会覆盖掉默认的MariaDB,即MySQL的分支
选择合适的linux版本,
通过wget获取
wget -i -c https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
通过yum安装下载的文件
yum -y install mysql80-community-release-el7-7.noarch.rpm //yum安装会询问用户 :is that ok? 这里的y表示不再询问
安装MySQL服务器
yum -y install mysql-community-server
安装完成
如果出现No match for argument: mysql-community-server
Error: Unable to find a match: mysql-community-server 异常
//先执行
yum module disable mysql
//再执行
yum -y install mysql-community-server
如果出现公钥没有被安装
出现问题的原因是mysql的gpg升级了需要重新获取,使用如下命令rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
然后在重新执行上面的安装mysql服务的命令 如果出现以下错误
那么只能使用不需要gpg检查的安装命令了
sudo yum -y install mysql-community-server --nogpgcheck
最后出现如下画面表示安装成功了
MYSQL数据库操作设置
启动MySQL服务
systemctl start mysqld.service
查看MySQL运行状态
systemctl status mysqld.service
active表示正在运行中。
在日志中查找mysql root临时密码
grep "password" /var/log/mysqld.log
以root进入mysql数据库并修改密码
mysql -uroot -p //以root方式进入并输入密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password'; //修改root密码 注意分号一定要输入
修改密码出现 Your password does not satisfy the current policy requirements 以下在MySql8.0 和 MySql5.7有区别
//查看mysql初始密码策略 注意要重新设置密码之后才能查看 建议使用临时密码设置为密码或者在临时密码基础上加一个字母即可
SHOW VARIABLES LIKE 'validate_password%';//查看密码策略
注意上面的在mysql5.7是validate_password后面是_而不是.
例如:
在mysql8.0 validate_password.policy 在mysql5.7中是 validate_password_policy
//根据set global命令修改对应的变量值
set global validate_password.policy=LOW;//以密码策略为例子 修改为低 其他类似 在mysql8.0
set global validate_password_policy=LOW;//在mysql5.7中
注意:该方式重启服务后 修改的内容失效
root用户授权远程或指定ip访问us
//进入mysql
use mysql;
//显示具体表的内容
update user set user.Host='%' where user.User='root'; //user.Host可以指定具体的ip %表示任意ip均可 user.User指定用户名
//刷新权限
flush privileges;
创建新用户开启远程访问并刷新权限
//创建新用户
//创建用户模板
CREATE USER 'opendeepspace'@'ip' IDENTIFIED BY 'psw'; //ip如果是任何% psw密码满足要求
//例子
CREATE USER 'opendeepspace'@'%' IDENTIFIED BY 'wy.023ch';
//设置所有权限 对某个表 在任意ip地址
grant all privileges on 数据库.* to '用户名'@'IP地址';
//例子 对ods数据库的所有表授所有权限 所有ip地址 所有权限指grant外的权限
grant all privileges on ods.* to 'opendeepspace'@'%';
//收回权限
revoke all privileges on 数据库.* to '用户名'@'IP地址';
//只对某些数据库的表有权限 增删改查
grant insert on 数据库.* to '用户名'@'IP地址';//数据库.*表示所有表
//任意一步授权之后都要刷新权限
flush privileges;
创建新的用户并授权
//mysql5.7中可以直接
grant all privileges on . to test@'%' identified by '12345';
//MySQL8.0中必须先创建任意主机可访问的用户
create user test@'%' identified by '12345.com';
//授权
grant all on . to test@'%'; #privileges 可以省略!
//刷新权限
flush privileges;
检查防火墙开启端口
//添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//重载防火墙
firewall-cmd --reload
//查看防火墙列表
firewall-cmd --list-all
如果是阿里云ecs服务器 需要添加安全组开放3306端口入方向
更改mysql字符集
//如果在没配置开机启动之前,你关闭了服务器 那么需要先启动并检查状态
systemctl start mysqld
systemctl status mysqld
//登录mysql
mysql -uroot -p
//查看字符集
status; //
上面标注的就是需要修改的字符集。 在8.0版本中修改字符集为utf-8 上面的utf8mb4编程uft8mb3
//退出mysql
quit;
//停止服务
systemctl stop mysqld.service
//修改etc/my.cnf 新增字符集内容 修改保存
vi /etc/my.cnf //修改cnf
//需要添加的内容
[client] //如果没有[client]段,就自己添加上去
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
//启动服务 或重启mysql
systemctl start mysqld //
service mysqld restart//重启mysql
//再次进入mysql查看状态
mysql -uroot -p
status;
设置开机启动
systemctl enable mysqld
systemctl daemon-reload