阿里云、腾讯云、CentOS下的MySQL的安装与配置详解
一、 安装
-
查看是否已安装
# 查看MySQL版本 mysql --version # 查看MySQL相关文件 whereis mysql
-
若已安装,卸载方法如下
# 卸载MySQL yum remove mysql
-
安装
-
查看yum源可安装的MySQL版本
# 查看可安装的MySQL版本 yum repolist all | grep mysql
-
一个都没有。。。因为某些原因,CentOS默认的yum源不提供MySQL了,所以要去官网获取适合自己系统版本的MySQL版本的源 https://dev.mysql.com/downloads/repo/yum/
#查看Centos版本的命令 cat /etc/issue
-
开始动手
# 添加MySQL5.7的源 wget http://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm sudo yum localinstall mysql80-community-release-el7-5.noarch.rpm -y
# 再次查看yum源MySQL版本 yum repolist enabled | grep mysql
# 安装MySQL sudo yum install mysql-server -y # 查看安装的版本 mysql --version
-
启动MySQL数据库
# 启动MySQL sudo service mysqld start # 重启MySQL sudo service mysqld restart # 查看MySQL状态 sudo service mysqld status # 停止MySQL sudo service mysqld stop
-
二、 初始密码、重置密码、修改密码
-
获取初始密码
# 获取初始密码 sudo grep 'temporary password' /var/log/mysqld.log
-
修改密码
# 用初始密码登录 mysql -uroot -p # 重置密码(密码要满足要求,就是要复杂一点) # 如果想要简单的密码,要修改密码策略 参考 https://www.cnblogs.com/liuhedong/p/11131693.html ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; ## 我修改了长度和策略(策略为0,长度限制最新6位) Set Persist validate_password.policy = 0; Set Persist validate_password.length = 6;
-
忘记密码重置密码
# 查询配置文件位置 mysql --help|grep 'my.cnf'
# 修改配置文件 在[mysqld]下添加参数skip-grant-tables vim /etc/my.cnf # 重启MySQL sudo service mysqld restart
# 无密码登录 mysql -u root # 密码设为空(试过了,不能修改密码,只能为空) use mysql; update user set authentication_string = '' where user = 'root'; # 修改配置文件 删除参数skip-grant-tables vim /etc/my.cnf # 重启MySQL sudo service mysqld restart # 无密码登录 mysql -u root # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
三、修改host实现远程连接
-
背景
数据库装好了!
密码也整好了!
端口也配置好了!
云服务器端口也开放了!
navicat还是 连不上 远程服务器的数据库!!!!
-
原因
用户Host属性为localhost,就只能服务器本地连接,所以连不上
-
解决办法
将Host属性改为通配符‘%’,远端就可以了
# 登录MySQL mysql -uroot -p # 修改当前数据库 use mysql; # 查看用户的Host属性 select User,Host from user; # 修改用户属性 update user set host = '%' where user = 'root'; # 刷新权限 flush privileges;
四、 添加新用户并授权
-
背景
大多数情况下,为了保证数据安全,我们的数据库操作都不是用root用户,某些用户只能读,某些用户可写可读,某些用户只能操作某一个数据库而不是整个MySQL数据库
-
解决办法
# 新增用户(密码可以为空)
CREATE USER '用户名'@'登录权限' IDENTIFIED BY '密码';
# 授权
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'登录权限'