MySQL集锦
1、官网下载地址:https://downloads.mysql.com/archives/community/
2、ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
密码设置策略修改:将密码策略修改成low等级: set global validate_password_policy=0;
等同于 SET GLOBAL validate_password_policy=LOW;
3、设置允许远程登录:
update user set user.Host='%' where user.User='root';
flush privileges;
4、修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
5、创建数据库:
create database ruby_test character set utf8 collate utf8_general_ci;
CREATE DATABASE test_sql CHARSET=utf8 COLLATE utf8_general_ci;
6、查看字符集:show variables like "character%"
7、centos7安装mysql,mysql目录说明
mysql的默认data目录是 /var/lib/mysql;
mysql的默认配置目录是 /etc/mysql/conf.d
8、You can't specify target table 'Person' for update in FROM clause
--原因在于 mysql不能先select出同一表中的某些值,再update这个表(在同一语句中),需要对这些临时值做一个表封装
--错误写法
UPDATE person SET deleted=1 WHERE id IN(
SELECT DISTINCT p1.id AS id
FROM person p1
JOIN person p2
ON p1.name=p2.name WHERE p1.id > p2.id ORDER BY id ASC
);
--正确写法
UPDATE person SET deleted=1 WHERE id IN (SELECT id FROM (
SELECT DISTINCT p1.id AS id
FROM person p1
JOIN person p2
ON p1.name=p2.name WHERE p1.id > p2.id ORDER BY id ASC
)AS p);
9、MySQL8远程连接 1251错误
错误详情:1251 - client does not support authentication protocol requested by server;consider upgrading MySQL client
解决方案原文:https://blog.csdn.net/m0_59440594/article/details/122993353
错误原因:MySQL8.0.4以前的版本和MySQL8.0.4及以后的版本,密码认证插件有所改变,之前使用的是“mysql_native_password”,8.0.4及以后使用的是“caching_sha2_password”,
解决:把mysql用户登录密码加密规则还原成mysql_native_password.
-- 查看用户相关信息:
/*
user: 用户名
host:允许连接的主机,%表示所有主机都可以连接
plugin:密码认证插件
authentication_string :密码,加密处理了的
*/
select host,user,plugin,authentication_string from mysql.user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
10、远程连接mysql8.0容器 2003错误
--1)查到的解决方案就是 授权,将访问权限设置成所有IP(此路不通)
GRANT ALL ON . TO ‘root’@’%’;
update user set user.Host='%' where user.User='root';
flush privileges;
--2)密码认证插件问题(此路不通)
select host,user,plugin,authentication_string from mysql.user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
--3)原因:容器默认使用3306端口,而我设置的端口是3307
show global variables like 'port';-- 查看端口,这个变量是只读变量
解决:在 容器目录/etc/mysql/conf.d对应的 宿主机目录(如/home/root/mysql80/conf)中添加 mysql.cnf
添加以下内容:
[client]
default_character_set=utf8
[mysqld]
character_set_server=utf8
collation_server=utf8_general_ci
port=3307 #真正解决问题的设置 设置mysql客户端连接服务端时默认使用的端口
添加完后,重启容器,再查看端口 show global variables like 'port';结果已经是3307了
11、MySQL查看用户权限
use mysql;
select user,host from user;
12、MySQL对中文进行排序
https://blog.csdn.net/weixin_32223625/article/details/113135863
如 SELECT * FROM yxa_users WHERE grade_name != '' ORDER BY CONVERT(`grade_name` USING gbk) ASC;
13、获取当前的毫秒数
SELECT NOW(), UNIX_TIMESTAMP(NOW()), UNIX_TIMESTAMP(NOW()) * 1000 % 1000;
# 这个查询将返回当前时间、当前时间的时间戳以及当前时间的毫秒数。
14、查看数据库以_log结尾的表名
SHOW TABLES LIKE '%_log';
15、备份与导入
mysqldump 导出:mysqldump -hlocalhost -uroot -ponmyown123 testsql student > d:/unimportant/2.sql
source和mysql 导入:
mysql –u root –p [dbname] < backup.sql
source d:/class_structure.sql; # 登录的情况下,切换到指定的数据库

浙公网安备 33010602011771号