Linux上部署MySql及使用

166 阅读3分钟

本篇文章以CentOS安装MySQL为例。 (乌班图小红帽或是Debian的安装在逻辑上大同小异,只是前缀命令会有区别,大体上还是一样的)

换源

  • 先备份(防止失败出现不可逆的情况) mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 换源 MySQL自己的源在国外,下载起来真的是乌龟爬爬,因此要换源,阿里清华什么的源都可以,这里换阿里的镜像源。 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

这里要说一下,Centos-7这里代表的是系统的版本,如果是centos6的就改成Centos-6,其他版本同理

刷新缓存区

分别运行以下两行命令

yum clean all
yum makecache

指定到MySQL安装包

wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm

以上表示的是安装mysql8.x版本的意思

下载

yum localinstall mysql80-community-release-el7-2.noarch.rpm -y

检查MySQL服务

yum search mysql-community-server

安装

yum install mysql-community-server -y

检查MySQL是否存在

安装完成后记得看看有没有安装完成

ps -ef | grep mysql

看到有mysql信息说明安装成功

启动MySQL

systemctl start mysqld 注意:新的版本的mysql第一次启动时会有临时密码,我们要记一下,之后需要改密码的

  • 查看临时密码 cat /var/log/mysqld.log | grep password 密码在最后面,没记错的话是在password:后面的一串乱七八糟的字符+字母+数字的组合,我们要把他复制下来,放到记事本里暂存!

登录

mysql -u root -p

之后要输入密码,把刚刚复制到记事本里的密码敲进来,看不到输入了什么没关系,正常现象。

改密码

毕竟是临时密码,我们要改的

  • 第一步 set global validate_password.policy=0;
  • 第二步 set global validate_password.length=0;
  • 第三步 ALTER USER 'root'@'localhost' IDENTIFIED BY '这里打你的密码'; 上面这条命令代表只允许root用户在本地登陆,这样能有效保护数据库的安全性。
  • 第四步 退出,重新登陆。重复登录步骤,只是此次密码是你刚刚改的密码。

到这里其实我们的MySQL已经安装部署完成了,但是,怎么操作数据库好像还没有讲,本着负责任的态度,再花点时间写到底。

新建用户及授权

  • 让每个用户只能管理一个数据库

    • 建立一个名为test数据库,新建hk01用户,可在本地登陆 create user 'hk01'@'localhost' identified by '这里输入你的密码';
    • 再建一个用户hk01可在远程登陆 creaye user 'hk01'@'%' identified by '这里输入你的密码';
  • 修改远程连接密码机制,否则连接时会报错(如果需要本地通过其他服务连接就把%改成localhost) ALTER USER 'hk01'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';

  • 刷新权限 FLUSH PRIVILEGES;

  • 授权 grant all privileges on test01.* to hk01@"%" with grant option; 再授权本地的 grant all privileges on test01.* to hk01@"localhost" with grant option;

  • 刷新权限 flush privileges;

防火墙端口问题

若远程连接的时候报错,说明防火墙mysql的3306端口没有开启,开启命令如下 firewall-cmd --zone=public --add-port=3306/tcp --permanent 重启防火墙 systemctl restart firewalld

centos7版本上防火墙都变成了firewall,而在7之前是iptables,命令会有不同;此外,开启防火墙请退出mysql,退出mysql直接在mysql操作的界面输入quit就可。

其他方式 如果你是阿里云或是腾讯云之类的在平台购买的服务器,可在平台的

控制台——实例——管理——实例安全组——配置规则——添加安全组

添加规则,在端口范围填3306,在授权对象填0.0.0.0/0,其他默认即可。