MySQL专题,第一期—mysql安装授权

一、背景

MySQL是一个关系型数据库管理系统,现在是属于Oracle旗下的产品。MySQL数据库所使用的sql语句都是最常用标准化的sql语句,这就说明,学习数据库,mysql是最好不过的选择了。其他的也不多废话,直接上干货。

二、下载安装

1.说明

① 关于mysql的下载安装,官方提供有两种安装方式:一种是ZIP直接解压版的,另一种是MSI“下一步”型安装版的。我这里采用ZIP直接解压版安装,MSI安装版的大家有兴趣的可以自行尝试。

② 关于mysql版本问题,我建议大家起码安装mysql5.7以上的,因为这涉及到mysql的默认引擎问题。mysql5.7以上默认使用InnoDB引擎。而这个引擎也是在当今“高并发”形势下的高效引擎。具体的我们后边会详细讲述。

2.安装运行

关于安装,其实解压了就算安装了。但是为了方便我们还需要进行一些操作。

① 为了启动方便,我们可以将mysql的启动程序加入环境变量的path变量中。

命令如下:PATH=.......;C:\Program Files\MySQL\mysql-5.7.17-winx64\bin

加入环境变量后就可以直接在cmd命令行启动mysql了。但是别忙我们还需要对mysql进行一些配置。

② 我们可以看到mysql目录下有个my-default.ini文件。将该文件备份然后复制一份命名为my.ini文件。(养成备份的好习惯,对编程学习是很有帮助的)

③ 编辑my.ini文件,如下图

④以管理员身份运行cmd,进入mysql的bin目录下(不管有没有配置过环境变量,也要进入bin文件夹,否则之后启动服务仍然会报错误)

输入命令mysqld -install完成安装。

⑤安装成功后就要启动服务了,继续在cmd中输入:net start mysql(如图),服务启动成功!

⑥服务启动成功之后,就可以登录了,如图,输入mysql -u root -p(第一次登录没有密码,直接按回车过),登录成功!

三、授权,建立自己的数据库

1.说明

安装运行已经完成了。但是这里有三个问题:

① root管理员用户不能没有密码

② root用户下系统库,系统表很多,而且很重要。不仅看着杂乱,而且不安全。

③ 我们希望有我们自己的用户,用户下只能看到自己权限下的表,怎么做。

① 为root用户加密码。加密码方式很多,我这里采用其中一种,直接改系统用户表中的数据。

编辑mysql的配置文件(这里叫my.ini)添加一行命令:

skip-grant-tables 该命令的意思是,mysql跳过权限认证。

然后重启数据库,登录数据库,注意这里登录不需要密码,遇到需要密码的直接回车即可。

进入数据库运行:

update mysql.user set authentication_string=password('123qaz') where user='root' and Host = 'localhost'; //更新root用户密码为:123qaz。

然后执行:flush privileges; //刷新数据库权限

以上root用户密码就修改了。这个方式同样可以修改任意用户,还有就是系统用户表字段不一定是authentication_string,这个跟mysql版本有关系。

修改完密码后记得在配置文件中删除skip-grant-tables。(很重要,关系到数据库安全)

之后,重启数据库就可以了。

这里还有一个小问题就是:我们有时候会发现root用户无法同伙ip远程登录。这个权限也与这个用户系统表有关系。执行以下sql就可以了:

UPDATE user SET Host='%' WHERE User='root' AND Host='localhost' LIMIT 1; //设置用户登录地址为任意(%)。

② ③两个问题我们一起解决。解决方案如下:

新建数据库,新建用户,将该数据库权限给用户。就可以解决了。

1.新建数据库

CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

注意:这里我希望大家跟我一样指定数据库字符集,避免出现中文乱码(不要想着创建表的时候指定字符集,数据库本身字符集不对,指定表字符集也没用)

2.创建用户

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

注意:这里我依然指定用户可以在任何远程机器上可以登录(%),如果你只需要在本地使用可以指定为localhost。

3.赋权限

GRANT privileges ON databasename.tablename TO 'username'@'host'

解释:给可以在host上登录的username用户赋权限privileges,可以操作databasename数据库下的tablename表。

1)这里privileges 可以是SELECT , INSERT , UPDATE 等。如果要赋全部权限则为“ALL”。

2)databasename即为数据库名。tablename 即为表名。如果想赋全部数据库权限即为*,如果想赋全部表权限即为*。如果是全部数据库全部表即为*.*

eg: grant all on db2.* to 'zhangsan'@'%';

这里是赋值zhangsan用户db2数据库全部表全部权限。这样用zhangsan用户登录就只可以看到zhangsan用户下的数据库与其表了。

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

操作还是比较简单的,希望大家都能有一个干净利索的mysql数据库。后续我会讲一些mysql查询优化的事,记得关注我哦。

点赞,分享,关注就是对小编最好的支持。谢谢大家!

早安,周六的你,好吗?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180512G0CQ0Q00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券