mysql@数据库
mysql 笔记
学习mysql中查了很多资料,有些常用又可能会忘记的内容,为了避免再次麻烦地查资料,记录如下:
8.0版本正确用法:https://blog.youkuaiyun.com/starshards_/article/details/81079242
8.0正确安装配置方法:https://www.jb51.net/article/145036.htm
django配置mysql8.0报错解决方法:https://blog.youkuaiyun.com/qq_35304570/article/details/79674449
mysql 增加用户,设置权限
1.修改密码
mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin
https://blog.youkuaiyun.com/memory6364/article/details/82426052
8.0版本修改密码安全等级方法:https://blog.youkuaiyun.com/HaHa_Sir/article/details/80552663
cat /var/log/mysqld.log | grep password // 获取初始密码
mysql> alter user 'root'@'localhost' identified by 'youpassword';修改初始密码
mysql> set password=password("youpassword");
8.0版本:创建用户的操作已经不支持grant的同时创建用户的方式,需先创建用户再进行授权
mysql> grant all on *.* to 'admin'@'%' identified by 'admin123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'admin123'' at line 1
mysql> create user 'admin'@'%' identified by 'admin123';
Query OK, 0 rows affected (0.06 sec)
mysql> grant all on *.* to 'admin'@'%' ;
Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
格式:`
mysql> set password for 用户名@localhost = password('新密码');`
例子:`
mysql> set password for root@localhost = password('123');`
方法2:用UPDATE直接编辑user表
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
1. 关闭正在运行的MySQL服务。
2. 打开DOS窗口,转到mysql\bin目录。
3. 输入`mysqld --skip-grant-tables` 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
6. 连接权限数据库: `use mysql;` 。
7. 改密码:`update user set password=password("123") where user="root";`(别忘了最后加分号) 。
8. 刷新权限(必须步骤):`flush privileges;` 。
9. 退出 `quit`。
10. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
2.添加用户并添加权限
or>grant all privileges on testDB.* to test@localhost identified by '1234';
or>grant select,insert,update,delete on *.* to test1@"%" Identified by “abc”;
or>grant select,insert,update,delete on book.* to test2@localhost Identified by "abc";
//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
mysql>flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
- 删除用户
>drop user 用户名@"%";
>drop user 用户名@localhost;
>mysql -u root -p
>密码
mysql>Delete FROM user Where User='test' and Host='localhost';
mysql>flush privileges;
mysql>drop database testDB; //删除用户的数据库
删除账户及权限:
>drop user 用户名@'%';
>drop user 用户名@ localhost;
- 修改指定用户密码
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="test" and Host="localhost";
mysql>flush privileges;
1、官方安装文档
http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
2、下载 Mysql yum包
http://dev.mysql.com/downloads/repo/yum/
下载到本地再上传到服务器,或者使用wget 直接下载
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
3、安转软件源
将platform-and-version-specific-package-name 替换为你下载的rpm名
sudo rpm -Uvh platform-and-version-specific-package-name.rpm
例如
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
4、安装mysql服务端
yum install -y mysql-community-server
如果网络环境不是很好,执行完命令就可以去泡杯茶?或者荣耀杀一局(可以自己先下载好相应的rpm包或直接下载…bundle.tar压缩包)
5、首先启动mysql
service mysqld start
(重启是restart,完全弄好MySQL后最好添加lower_case_table_names=1到[mysqld]下面一行然后重启MySQL,这是为了和windows兼容,还有就是在[mysql]下面一行加入default-character-set=utf8)
systemctl start mysqld.service(这个是上面步骤执行后自动输出的,我这边的全称是:Redirecting to /bin/systemctl start mysqld.service)
然后回到[…]#
6、接着检查mysql 的运行状态
service mysqld status
systemctl status mysqld.service(也是系统自动输出的,我这边全称是:Redirecting to /bin/systemctl status mysqld.service)
然后会输出一大段关于MySQL状态的信息:
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2017-07-30 08:24:29 CST; 26s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 58507 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 58426 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 58511 (mysqld)
CGroup: /system.slice/mysqld.service
└─58511 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/my...
7月 30 08:24:21 localhost.localdomain systemd[1]: Starting MySQL Server...
7月 30 08:24:29 localhost.localdomain systemd[1]: Started MySQL Server.(注意这句话,说明此时MySQL服务已经在运行)
7、修改临时密码
Mysql5.7默认安装之后root是有密码的。
7.1 获取MySQL的临时密码
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码
grep 'temporary password' /var/log/mysqld.log(如果之前安装过MySQL则这里可能会有多个密码,用最后一个,注意这个密码输入时是可以粘贴的)
这里的密码是YdsGaxOq>2n!
7.2 登陆并修改密码
使用默认的密码登陆
mysql -uroot -p(这是一个MySQL的以密码登录root用户的命令)
用该密码登录到服务端后,必须马上修改密码再执行一些数据库操作,不然会报如下错误:
mysql> select @@log_error;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>
修改密码(注意,登录后的操作后面都最好要有;结尾)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
如果密码设置太简单出现以下的提示
如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements呢? 这里直接提供解决方案文末有详细的说明
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
再修改密码的长度
set global validate_password_length=1;
再次执行修改密码就可以了
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';(ALTER等可以写成小写)
8、授权其他机器登陆
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
9、关于密码设置的详细说明
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
PS:以下内容请略过
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 [这儿][3],
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 [这儿][4].