一、背景
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查询优化的事,记得关注我哦。
点赞,分享,关注就是对小编最好的支持。谢谢大家!
早安,周六的你,好吗?
领取专属 10元无门槛券
私享最新 技术干货