1326 字
7 分钟
MySQL命令

mysql命令

1.登陆 #-u用户 root mysql命令

1.登陆 #-u用户 root #-p密码 不输入则交互输入密码 #-h主机ip #-P端口号 mysql -uroot -p -h127.0.0.1 -P3306 #免密码登陆 mysql_config_editor set —login-path=root —user=root —host=127.0.0.1 —port=3306 -p mysql —login-path=root -A

2.创建数据库 CREATE DATABASE ‘test’ CHARACTER SET ‘utf8’ COLLATE ‘utf8_general_ci’;

#CREATE DATABASE oracle:    代表的是创建数据库 oracle。 #DEFAULT CHARACTER SET utf8 : 代表的是将该库的默认编码格式设置为 utf8 格式。 #COLLATE utf8_general_ci :   代表的是数据库校对规则.分为三部分,分别为数据库字符集、解释不明白、区分大小写。

#utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。 #utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。 #utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

3.创建用户,授权(用户密码需要加引号) #grant 权限 on 数据库名.* to 用户名@’%’ identified by ‘密码’ #写identified by ‘密码’会修改密码 如: create user ‘test’@’%’ identified by ‘123123’; grant all on test.* to ‘test’@’%’; #查看用户权限 show grants for ‘用户名’@’%’;

权限 ALTER ROUTINE 编辑或删除存储过程 CREATE ROUTINE 创建存储过程 EXECUTE 运行存储过程 all 全部权限 select,insert,update,delete 增删改查 create,alter,drop,index 创建,控制,删除,索引

create,alter用户报错ERROR 1396 授权用户报错ERROR 1410创建用户的时候没指定ip,create user ‘test’@’%’ identified by ‘123123’; 查看用户权限ERROR 1141创建用户的时候没指定ip,create user ‘test’@’%’ identified by ‘123123’;

授权如下: GRANT CREATE, ALTER, DROP, INDEX, CREATE TEMPORARY TABLES ON . TO ‘edpusr’@’%’; GRANT SELECT,INSERT,UPDATE,DELETE ON . TO ‘edpusr’@’%’; GRANT ALTER ROUTINE,CREATE ROUTINE,EXECUTE ON . TO ‘edpusr’@’%’;

4.修改密码 update mysql.user set authentication_string=‘新密码’ where user=‘用户名’; alter user 用户名@’%’ identified by “密码”; #命令刷新权限 flush privileges;

5.在操作系统添加mysql vip ifconfig eth0:1 vip netmask xx.xx.xx.xx broadcast xx.xx.xx.xx up

ip a add 192.168.1.11/23 dev eth0:1 新增一个别名 ip a del 192.168.1.11/24 dev eth0:1 删除一个别名

6.常用操作 #查看数据库mysql的用户信息 desc mysql.user; #查看数据库插件路径 show variables like ‘%plugin_dir%’; #查看数据库目录路径 show variables like’%datadir%’; #查看所有进程 show processlist; #在从库查看主从信息 show slave status \G; #切binlog日志 flush binary logs; 查看binlog日志 show binary logs;

7.数据库改名 1>.要改的名 create database 新库名 2>.旧库表迁移到新库(只修改中文部分) select CONCAT(‘RENAME TABLE ‘,TABLE_SCHEMA,’.‘,TABLE_NAME,’ to ’, ‘新库名.’,TABLE_NAME,’;’) from information_schema.TABLES where TABLE_SCHEMA = ‘旧库名’; 3>.给新库库下用户重新授权权限 show grants for ‘旧库名的用户名’@’%’;

8.忘记mysql密码 1>.关闭mysql实例 servic mysqld stop

2>.启动使用—skip-grant-tables参数,跳过权限验证 mysqld_safe —defaults-file=/etc/my.cnf —skip-grant-tables > /tmp/mysql_start.log &

3>.mysql连接,使用update方式修改密码 mysql update mysql.user set authentication_string=password(‘123123’) where user = ‘root’ host = ‘localhost’; flush privileges;

4>.重启数据库 mysqladmin -uroot -p123123 shutdown mysqld_safe —defaults-file=/etc/my.cnf > /tmp/mysql_start.log &

#相关报错 #下面是存储过程不能查看报错 user does not have access to metadata required to determine stored procedure #增加执行存储过程权限,MySQL8之前的版本需要执行 #mysql早期版本需要执行flush privileges;刷新授权 GRANT SELECT ON mysql.proc TO ‘user’@’%’; flush privileges;

#执行Function的访问权限 set global log_bin_trust_function_creators=true; flush privileges;

5.在线参数修改

1>.wait_timeout:连接空闲超时时间。 #与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间。可以认为是服务器端连接空闲的时间,空闲超过这个时间将自动关闭。

2>.max_prepared_stmt_count 参数限制了同一时间在mysqld上所有session中prepared 语句的上限。 #它的取值范围为“0 – 1048576”,默认为16382。 #mysql对于超出max_prepared_stmt_count的prepare语句就会报错

3>.执行Function的访问权限 #当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。 #如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 #设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 #如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建

set global wait_timeout=28800; set global max_prepared_stmt_count = 200000; set global log_bin_trust_function_creators=true;

#下面是Function无访问权限报错 ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

#下面是max_prepared_stmt_count超出报错 Can’t create more than max_prepared_stmt_count statements (current value: 16382)”错误。

6.mysql 正确的写法: alter table t1 modify state varchar(22) not null default ” comment ‘产品状态’;

错误的写法: alter table t1 modify state varchar(22) connect ‘产品状态’ //此操作会讲not null default ”信息清掉

这种问题会发生在mysql,tidb中,需要特别注意,oracle中则没有这种问题.

7.SHOW CREATE TABLE语句无法使用 修改参数 set SQL_QUOTE_SHOW_CREATE=0; 或 mysql -uroot -e ‘SET SQL_QUOTE_SHOW_CREATE=0; use test; show create table test’; mysql -e ‘use test; show create table test \G’ | tr -d ‘'; mysql -e 'use test; show create table test \G' | sed -e 's///g’; https://blog.csdn.net/aosica321/article/details/53433677

MySQL命令
https://blog.newworld.help/posts/mysql命令/
作者
勇敢DBA不怕困难
发布于
2024-05-14
许可协议
CC BY-NC-SA 4.0