一.Mysql用户管理
诚然,如果我们在mysql中只是用root账户会有很大的安全隐患,此时我们就需要Mysql的用户管理.
1.1查看当前所有的用户
还记得我们数据库最开始时便有一个名称为mysql的数据库,我们的用户信息就存在这个数据库的user表中:
我们这里仅部分显示user(因为实在是太长了),其中host中%表示允许任意主机(本地或远端连接)使用该用户,localhost则仅允许本地连接使用,下面我们会细说.
那么,实际上后面的我们说到的添加用户,删除用户,为指定用户增加/撤销权限其实就是对这张user表的增删查改操作.
1.2新增用户
语法:
create user '用户名'@'登陆主机/ip' identified by '密码';
示例(创建一个仅允许本地连接的用户张三):
mysql> create user 'zhangsan'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
localhost的位置表示允许连接的Ip,如果设置为127.0.0.1和localhost效果一样,如果设置为%则是允许所有IP进行连接使用该用户,当然也可以限制IP.
此时我们本地新启一个窗口使用该账户是可以使用的,但是远端连接会拒绝访问:
(当然第二幅图先执行的是下面的语句输入密码后才有上面的报错,偷个懒就不打码了).
此时我们再看user表会发现多出一个张三的用户:
1.3删除用户
语法:
drop user '用户名'@'主机名'
这里我们直接删除上面创建的张三用户:
mysql> drop user 'zhangsan'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> select Host,user from user;
+-----------+---------------+
| Host | user |
+-----------+---------------+
| % | ly |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
发现张三就没有了.
1.4修改密码
修改密码有两种方式,一种是用户自己修改自己的密码,还有一种就是root账户修改指定用户的密码,二者的语法如下:
#用户自己修改自己的密码:
set password=password('新的密码');
#root账户修改指定用户的密码:
set password for '用户名'@'主机名'=password('新的密码');
大家可以自行进行尝试,这里就不再演示了.
1.5为用户增加或删除权限
上面展示的就是对于一个用户可以为其增加或撤销的所有权限以及其用途,增加或撤销权限的语法如下:
#增加权限
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
#我们也可以在修改用户权限时为用户设定密码(带上[]部分),但尽量提前就设置好
#撤销权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
如果想要为一个用户赋予其对某一张表的所有权限,可以不用一个一个打,直接在权限列表位置写上一个all即可.具体某个权限对应什么功能,部分我们已经在前面的文章中介绍过,读者如若详细了解可以自行搜索.
二.windows下安装Mysql5.7并远程连接云服务器上的Mysql数据库
2.1官网下载mysql5.7版本
https://downloads.mysql.com/archives/community/
这里我们选择5.7.35版本进行下载,如果你是32位系统,选择下面的第一个进行下载,64位则选择第二个进行下载.
2.2配置mysql
(解压位置可以自行选择,我这里选择安装在D盘)
解压好文件之后,会的到如下图的文件:
此时我们需要创建一个新的文件夹名为data,以及一个配置文件为my.ini:
然后使用记事本打开my.ini,在该文件中写入如下的内容:
[mysqld]
port=3306
character_set_server=utf8
basedir=D:\mysql\mysql-5.7.35-winx64
datadir=D:\mysql\mysql-5.7.35-winx64\data
server-id=1
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
innodb_file_per_table = 1
log_timestamps=SYSTEM
log-error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
long_query_time = 5
log-bin = binlog
binlog_format = row
expire_logs_days = 15
log_bin_trust_function_creators = 1
[client]
default-character-set=utf8
注意basedir与datadir的除去\data的部分是你解压的文件所在的位置,路径不能有中文.
2.3配置mysql的环境变量
win + r,输入 sysdm.cpl,点击高级。
此时点击右下角的环境变量:
在系统变量中新填名为MYSQL_HOME的环境变量,变量值为你的解压目录:
添加完后点击确定然后在系统变量中找到名称为PATH的环境变量,选中它并点击编辑:
点击右侧的新建:
输入 %MYSQL_HOME%\bin后点击确定,就可以关闭窗口了.
2.4初始化数据库
以管理员方式打开cmd,进入MySql安装目录下的 bin目录,执行命令,mysqld --initialize-insecure
执行成功后data文件夹中会出现很多新文件(此操作之前该文件夹为空):
继续执行 命令: mysqld -install 成功后会显示如下结果:
此时我们就可以输入net start mysql启动mysql服务了,如果想要停止将start换为stop即可.
因为此时我们的本地数据库只有root用户,所以我们输入mysql -u root -p按两下回车便可以直接访问我们windows下部署的数据库服务了,如果你想要更改密码可以参考本文的第一大部分,接下来我们需要对云服务器进行配置:
2.5修改云服务器中数据库的设置
这里默认读者们已经在自己的linux云服务器上安装了mysql5.7,如果没有读者可以自行搜索相关文章在云服器上安装之后再进行下面操作.
首先我们要为云服器上的mysql新增一个允许所有ip地址连接使用的用户:
create user '你自己想要设置的用户名'@'%' identified by '你自己的密码';
我这里创建的是一个名为ly的用户:
然后查看mysql的配置文件mysqld.cnf(一般在/etc/mysql/mysql.conf.d/路径下),找到port和bind-address,前者是你mysql服务运行的端口号,后者是允许连接使用数据库的IP地址.(注意我的系统是ubuntu,不同linxu操作系统配置文件位置可能不同):
如果想要远端连接,因为我的mysql设置的是在8080号端口上开放的(默认是3306),所以需要在对应的云服器厂商提供的平台为自己的云服器开放对应端口号.具体操作因为云服器厂商过多,这里无法一个一个介绍,读者请自行进行开放.
然后就是bind-address,这里我们需要设置为0.0.0.0,表示接收所有IP地址的主机连接使用本机的mysql服务.设置为0.0.0.0之后需要重启云服务器的mysql服务,重启命令为:
sudo systemctl restart mysql
ok了到这里我们就可以使用windows提供的终端窗口进行连接远端服务器的数据库了:
(-u后面的位置替换为你设置的允许所有IP连接使用的那个用户名)