安装mysql8
一、window安装
msi版本下载:https://dev.mysql.com/downloads/windows/installer/8.0.html
zip版本下载: https://dev.mysql.com/downloads/mysql/
zip安装
-
下载好后解压到指定目录,如D:\Program Files\MySQL\mysql-8.0.14\
-
初始化数据库
# 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
-
安装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 退出登录。
- 修改密码
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访问权限
接下来就是最重要的部分了:
- GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’
这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址 - flush privileges;
这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据
因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
执行完这两步,再次查询用户表命令:select User,authentication_string,Host from user
发现多了一个用户,该用户所有的主机都可以访问,此时再次用sqlyog访问连接成功!
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