安装mysql8

时间:2019-01-23
本文章向大家介绍安装mysql8,主要包括安装mysql8使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

安装mysql8

一、window安装

msi版本下载:https://dev.mysql.com/downloads/windows/installer/8.0.html
zip版本下载: https://dev.mysql.com/downloads/mysql/

zip安装

  1. 下载好后解压到指定目录,如D:\Program Files\MySQL\mysql-8.0.14\

  2. 初始化数据库

     # windows中路径有空格需要双引号包裹,必须没有my.ini文件
     mysqld --initialize --console --basedir="D:/Program Files/MySQL/mysql-8.0.14" --datadir="D:/Program Files/MySQL/mysql-8.0.14/data"
     
     #使用上面初始化即可
     # mysqld --initialize --console --user=mysql --basedir="D:/Program Files/MySQL/mysql-8.0.14" --datadir="D:/Program Files/MySQL/mysql-8.0.14/data"
    
     #初始化后控制台显示的临时密码,保存下来一会使用
     2019-01-22T17:52:36.113344Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 0IQUOpsH<Vpc
    
  3. 安装windows服务,mysql8安装无需my.ini配置文件即可启动运行。mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"

     mysqld install 
     #指定配置文件安装mysql服务
     #mysqld install MySQL80
     #mysqld install MySQL8 --defaults-file="D:\Program Files\MySQL\mysql-8.0.14\my.ini"
    

删除window服务

mysqld remove MySQL

例子,删除mysql8的服务,windows服务不区分大小写

D:\Program Files\MySQL\mysql-8.0.14\bin>mysqld remove mysql8
Service successfully removed.

4.启动服务器并登录 MySQL

  • 启动服务(上面安装的mysql服务为mysql)

      net start mysql
    

或通过服务启动也可以。

  • 登录mysql

      mysql -u root -p
      #之后输入之前得到的临时密码
    

当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:
mysql -h 主机名 -u 用户名 -p

参数说明:
-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0。1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:

mysql -u root -p

按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:
Enter password:

若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welecome to the MySQL monitor… 的提示语。

然后命令提示符会一直以 mysq> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。

  1. 修改密码

mysql修改好密码就可以通过连接工具登录了

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 未执行 flush privileges;

其他

注意: 在 5.7 需要初始化 data 目录:

cd C:\web\mysql-8.0.11\bin 
mysqld --initialize-insecure 

初始化后再运行 net start mysql 即可启动 mysql。

my.ini中的配置说明安装服务

6.使用自定义配置文件

my.ini放在mysql8安装目录下即可,启动会自动识别,文件内容配置使用

[client]
port=3308

[mysql]
# default-character-set=
default-character-set=utf8

[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3308

# Path to installation directory. All paths are usually resolved relative to this.
basedir=D:/Program Files/MySQL/mysql-8.0.14/

# Path to the database root
datadir=D:/Program Files/MySQL/mysql-8.0.14/data

# The default character set that will be used when a new schema or table is
# created and no character set is defined
# character-set-server=
character-set-server=utf8

# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB

# Set the SQL mode to strict
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" #mysql5默?值
#sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" #mysql8默?值
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"


# General and Slow logging.
log-output=FILE

general-log=0

general_log_file="mysql.log"

slow-query-log=1

slow_query_log_file="mysql-slow.log"

long_query_time=3

# Binary Logging.
# log-bin

# Error Logging.
log-error="mysql.err"
# 递归
max_sp_recursion_depth=20

参考

http://www.runoob.com/mysql/mysql-install.html
https://www.cnblogs.com/fightingting/p/10023724.html

二、其他安装后使用的配置

1. root设置可远程登录

查询用户表命令:select User,authentication_string,Host from user

这里也可以看出host默认都是localhost访问权限

接下来就是最重要的部分了:

  1. GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’
    这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址
  2. flush privileges;
    这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据
    因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
    执行完这两步,再次查询用户表命令:select User,authentication_string,Host from user
    发现多了一个用户,该用户所有的主机都可以访问,此时再次用sqlyog访问连接成功!

参考 https://www.cnblogs.com/goxcheer/p/8797377.html

2、mysql8 only_full_group_by问题

(1)手动设置,重启失效

这样设置之后新建的数据库都是设置之后的值,当前库需要设置一下

#查询mysql8的sql_mode
select @@sql_mode;
# 原配置ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

(2)配置文件中配置

[mysql] 中增加

 [mysql]
 sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

四、MySQL添加用户、删除用户与授权

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):

1.新建用户

1.1 登录MYSQL:

@>mysql -u root -p

@>密码

1.2 创建用户:

mysql> insert into mysql.user(Host,User,Password) values(“localhost”,“test”,password(“1234”));

这样就创建了一个名为:test 密码为:1234 的用户。

注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。

1.3 然后登录一下:

mysql>exit;

@>mysql -u test -p

@>输入密码

mysql>登录成功

2.为用户授权

授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;

2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:

@>mysql -u root -p

@>密码

2.2 首先为用户创建一个数据库(testDB):

mysql>create database testDB;

2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):

mysql>grant all privileges on testDB.* to test@localhost identified by ‘1234’;

mysql>flush privileges;//刷新系统权限表

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;

2.4 如果想指定部分权限给一用户,可以这样来写:

mysql>grant select,update on testDB.* to test@localhost identified by ‘1234’;

mysql>flush privileges; //刷新系统权限表

2.5 授权test用户拥有所有数据库的某些权限:

mysql>grant select,delete,update,create,drop on . to test@"%" identified by “1234”;

 //test用户对所有数据库都有select,delete,update,create,drop 权限。

//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)

//对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by ‘1234’;即可。

3. 删除用户

@>mysql -u root -p

@>密码

mysql>Delete FROM user Where User=‘test’ and Host=‘localhost’;

mysql>flush privileges;

mysql>drop database testDB; //删除用户的数据库

删除账户及权限:>drop user 用户名@’%’;

>drop user 用户名@ localhost;

4. 修改指定用户密码

@>mysql -u root -p

@>密码

mysql>update mysql.user set password=password(‘新密码’) where User=“test” and Host=“localhost”;

mysql>flush privileges;

5. 列出所有数据库

mysql>show database;

6. 切换数据库

mysql>use ‘数据库名’;

7. 列出所有表

mysql>show tables;

8. 显示数据表结构

mysql>describe 表名;

9. 删除数据库和数据表

mysql>drop database 数据库名;

mysql>drop table 数据表名;

三、MySQL添加用户、删除用户与授权 转载 https://www.cnblogs.com/wanghetao/p/3806888.html