MySQL 5.7
初始化
-
放好mysql之后,首先在根目录中检查有无
data
文件夹和my.ini
文件,若无则手动创建(先配好/bin的Path环境变量) -
然后是初始化 mysql,root 身份无密码登录:mysqld - -initialize-insecure;登陆数据库:mysql -u root -p,第一次直接回车进入mysql(后期版本:mysqld - -initialize,键入后会生成
初始密码
,新版必须使用此密码才能登入且进行密码修改;采用skip-grant-tables无密登入后是无法设置/修改密码的!!,可以在data目录下的err后缀文件中搜索password查看); -
初始化之后则直接安装:mysqld - -install(默认生成的
别名/服务名
为MySQL) -
启动/停止服务:net start/stop 别名;
-
退出:exit;
-
给服务设置别名:进入bin目录,service 别名 install;例如:service MySQL5 install(部分Windows无效,可试试sc命令);
涉及到
权限
的操作时,若使用的是诸如grant、set password等官方提供的语句修改命令,则mysql会自动刷新权限;但如果是直接通过修改表数据来进行操作的话,则在最后一步需要执行:flush privileges; 手动刷新才能立即生效。
设置密码
方法一
set password = password("xxx");
方法二
set password for root@localhost = password("xxx");
方法三
进入数据库后
use mysql;
select User,host from user;
update user set authentication_string = password("xxx") where User = "root";
若第三句报错,则使用
update user set authentication_string = "xxx" where User = "root";
最后
flush privileges;
因为直接更改用户表,所以需要刷新权限。
忘记密码无法登陆
先停止 mysql,然后进入 my.ini 中的 [mysqld] 下增加 skip-grant-tables 即可登陆(skip_grant_tables也行)。
授予主机连接数据库
- 所有主机:"livejq"@"%"
- 指定 ip 范围:"livejq"@"192.168.%.%"
- 本地主机:"livejq"@"localhost"
创建用户
create user "username"@"localhost" identified by "password";
修改字段属性
能修改字段类型、字段长度、默认值、注释,具体语法为
ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 新默认值 新注释;(COLUMN 可以省略)
#示例
alter table tb_user modify column age decimal(10,1) DEFAULT NULL COMMENT '这是字段注释';
alter table 图书 modify 折扣 float(2,2) null;
修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
#示例
alter table tb_user change id uid varchar(100) not null auto_increment comment '这是字段注释';
设置字符集
默认为 latin1,不支持中文。
具体做法
- 在 my.ini 文件中的 [mysql] 下加入 default-character-set = utf8
- 在 [mysqld] 下加入 character_set_server = utf8
验证是否生效
show global variables like "%char%"
查看 mysql 端口
show global variables like "port";
创建数据库
create database db_name;
使用数据库
use db_name;
删除数据库
drop database db_name;
删除表
delete table table_name;
导入 sql 文件
source 文件路径,
#示例
##Windows
source H:livejq.sql;
##Linux
source /opt/livejq.sql;
查看表结构
desc table_name
对用户授权
#所有权限
grant all privileges on *.* to "livejq"@"%" identified by "password" with grant option;
#指定权限
grant insert, delete, update, select on database_name.table_name to "livejq"@"%" identified by "password" with grant option;
若执行失败,则试试去掉identified by "password"
with grant option 是赋予用户授权的功能。
撤销用户所有权限
grant all privileges on *.* from "livejq"@"%"
查看用户当前拥有的权限
show grants for "livejq"@"%";
附件
[mysql]
default-character-set=utf8
[mysqld]
#skip-grant-tables
basedir=C:\mysql-5.7.29-winx64
datadir=C:\mysql-5.7.29-winx64\data
port=3306
character_set_server=utf8
default-time-zone='+8:00'
MySQL 8
创建用户并授权
CREATE USER '用户名'@'主机' IDENTIFIED BY '你的密码';
GRANT ALL ON 数据库名.* TO '用户名'@'主机';
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';
持续更新,欢迎补充 😋
评论区