本篇文章以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 '这里输入你的密码';
- 建立一个名为test数据库,新建hk01用户,可在本地登陆
-
修改远程连接密码机制,否则连接时会报错(如果需要本地通过其他服务连接就把%改成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,其他默认即可。