侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 171 篇文章
  • 累计创建 67 个标签
  • 累计收到 2 条评论

MySQL常用命令总结

liveJQ
2019-11-01 / 0 评论 / 0 点赞 / 752 阅读 / 2,723 字

MySQL 5.7

初始化

  1. 放好mysql之后,首先在根目录中检查有无data文件夹和my.ini文件,若无则手动创建(先配好/bin的Path环境变量)

  2. 然后是初始化 mysql,root 身份无密码登录:mysqld - -initialize-insecure;登陆数据库:mysql -u root -p,第一次直接回车进入mysql(后期版本:mysqld - -initialize,键入后会生成初始密码,新版必须使用此密码才能登入且进行密码修改;采用skip-grant-tables无密登入后是无法设置/修改密码的!!,可以在data目录下的err后缀文件中搜索password查看);

  3. 初始化之后则直接安装:mysqld - -install(默认生成的别名/服务名为MySQL)

  4. 启动/停止服务:net start/stop 别名;

  5. 退出:exit;

  6. 给服务设置别名:进入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,不支持中文。

具体做法

  1. 在 my.ini 文件中的 [mysql] 下加入 default-character-set = utf8
  2. 在 [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';

持续更新,欢迎补充 😋

0

评论区