root默认是不支持远程登录的,用外网连接必须给权限

1
2
3
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '909090' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

mysql数据库默认是没有密码的,

1
2
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('909090');
FLUSH PRIVILEGES;

init.sql,要尝试将密码去掉,然后scoreShop尝试不用密码是否可以访问到数据库!!!

scoreShop的Dockerfile最终要实现可以再 daocloud.io 上发布!!!

数据库启动命令,根据不同版本有所不同:

1
2
3
4
5
6
7
# 版本一
chown -R mysql:mysql /var/lib/mysql
mysqld --user=mysql &
# 版本二
chown -R mysql:mysql /var/lib/mysql
mysql_install_db --user=mysql > /dev/null
mysqld_safe --user=mysql &

having

1
2
-- 查询表中某个字段有重复数据的(例如:email)
select id from user group by email having count(*)>1;

regexp

1
2
3
4
5
6
-- 查询表中某个字段包含非数字的
select id,email from user where (id REGEXP '[^0-9]')!=0;
-- 查询表中某个字段不包含test.com字符串的
select id,email from user where (id REGEXP '[test.com]')=0;
-- 查询表中某个字段包含test.com字符串的
select id,email from user where (id REGEXP '[test.com]')!=0;

导入txt文件数据进入数据库

1
2
3
4
5
6
-- 查看允许导入txt文件的目录:下添加或修改 secure_file_priv
-- secure_file_priv=null 代表不允许,需到my.ini或者my.cng文件中,在[mysqld]下添加或修改secure_file_priv。
-- secure_file_priv= 代表任意目录,也可以指定目录如 secure_file_priv=/var/lib/mysql-files,则txt文件只能放该目录下才可以导入。
show variables like '%secure%';
-- 导入命令,用','区分字段,用换行区分下一条数据
LOAD DATA INFILE '/var/lib/mysql-files/users.txt' INTO TABLE users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

union all

1
2
-- 查询A中B没有的数据和B中A没有的数据
select id from (select id from A UNION ALL select id from B) temptb group by id having count(*)=1;

not in

1
2
-- 只查询A中B没有的数据
select id from user A where A.id not in (select B.id from user B);

mysqldump备份恢复数据库

1
mysqldump -uroot -p -B dbsName -l -R --set-gtid-purged=OFF >dbsName_20190628.sql

desc查看表结构

1
desc table_name;