MYSQL

1.Linux系统

1.1安装

 sudo apt-get install mysql-server

1.2开启服务

 service mysql start

1.3关机服务

 service mysql stop(restart/重启)

1.4 查看服务命令

关于服务我们可以用命令Systemctl 来查看(https://www.cnblogs.com/zhming26/p/6155201.html)

mysql.Service 

1. 列出所有可用单元 

# systemctl list-unit-files

2. 列出所有运行中单元 

# systemctl list-units

3. 列出所有失败单元 

# systemctl –failed

4. Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态 

# systemctl start httpd.service

# systemctl restart httpd.service

# systemctl stop httpd.service

# systemctl reload httpd.service

# systemctl status httpd.service

注意:当我们使用systemctl的start,restart,stop和reload命令时,终端不会输出任何内容,只有status命令可以打印输出。

1.4 进入mysql控制台(注意所有命令以;结尾)

通过命令mysql -u root -p 然后输入密码

 

首次进入控制台

ubuntu 18.04 上安装 mysql 5.7 之后,默认没有设置 root 密码.

sudo vi /etc/mysql/debian.cnf (这个文件包含一个默认用户,是给debain,ubuntu默认设置的)/linux etc目录是放软件的配置文件的地方

Automatically generated for Debian scripts. DO NOT TOUCH!

[client]
host = localhost
user = debian-sys-maint
password = fPw**********22
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password =fPw**********22
socket = /var/run/mysqld/mysqld.sock

 

1.mysql -u debian-sys-maint -p    Enter password:输入刚才找到的密码

2.root默认密码为空                      直接mysql -u root -p 回车

 

 

 

1.5设置root用户密码

(假设为123456,前提你要进入控制台,默认密码8为以上,大小写数字特殊字符都得有,也就是说123456是不可以的,除非你更改了密码策略)

mysql> update mysql.user set authentication_string=PASSWORD(“123456″) where User=’root’;

mysql> update mysql.user set plugin=”mysql_native_password”;

mysql> flush privileges;

mysql> quit;

 

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';(一步搞定)

 

重启mysql,用root用户和密码进去看看

mysql -u root -p

 

 

1.6 authentication_string 说明

字段版本是5.7以后,password字段已经被删除,取而代之的是authentication_string字段

update mysql.user set authentication_string=password('password') where user='root'and Host = 'localhost';

 

1.7 为什么更改插件?

auth_socket插件:如果您安装5.7并且没有为root用户提供密码,它将使用auth_socket插件。该插件不关心,也不需要密码。它只检查用户是否使用UNIX套接字进行连接,然后比较用户名。如果我们要配置密码,我们需要在同一命令中同时更改插件并设置密码。

首先更改插件然后设置密码将不起作用。先改密码,再更改插件是可以的。当然我推荐一步搞定的方式

所有在更改插件之前我们可以这样:设置过期时间    https://blog.csdn.net/chszs/article/details/50651264

修改加密规则  ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;password 为你当前密码。

更新 root 用户密码    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';  password 为你新设置的密码。

 

 

如何更换插件:

SELECT User, Host, plugin FROM mysql.user;(查看)

USE mysql;(进入mysql命名的数据库)

UPDATE user SET plugin='mysql_native_password' WHERE User='root';(更改插件)

FLUSH PRIVILEGES;(生效)

exit;

 

 

 

1.8 如何设置简单密码

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

https://www.jianshu.com/p/5cad576e5270(直接输入那几条命令就可以)

https://www.cnblogs.com/micenote/p/5788660.html

validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。

validate_password_length:密码最小长度。

validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count:密码至少要包含的数字个数。

validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。

validate_password_special_char_count:密码至少要包含的特殊字符数。




1.9 网上常见的mysqld(老版本)

这是因为window系统中的原因 ,或者人们习惯命名

因为修改了MySQL临时文件的目录后,使用service mysqld restart重启MySQL出现如下错误:

service: no such service mysqld

错误原因:
是因为我们在编译安装MySQL时没有将MySQL的控制脚本mysql.server拷贝到/etc/init.d/中。

解决办法:
将MySQL的安装目录下的support-files/mysql.server拷贝到/etc/init.d/中,并重命名为mysqld。拷贝命令如下:

#我的mysql安装路径是:/usr/local/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

 

service的命令的详解

https://www.cnblogs.com/givemelove/p/8778000.html


1.10 建立数据库时怎么设定字符集是utf8mb4

create database 数据库名称 default character set utf8mb4 collate utf8mb4_unicode_ci;

 


1.11mysqlclient (pip install就行)

https://www.cnblogs.com/zhangqunshi/p/6646580.html django flask mysql的安装

 

 


1.12 django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xC4\\x9A\\xC2\\x81vi...' for column 'file' at row 1")

解决方法1:删除数据库,新建数据库时指定排序规则:utf8mb4_unicode_ci

这是mysql版本问题 进入mysql命令行

mysql> show variables like '%char%';
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.21-macos10.13-x86_64/share/charsets/ |

如上,其中的编码有latin1的所以需要修改latin1为utf8,以下是mac中的修改办法

vim /etc/mysql/my.cnf

添加如下内容

[client]

default-character-set =utf8

[mysql]

default-character-set =utf8

[mysqld]

collation-server = utf8_unicode_ci
init_connect ='SET NAMES utf8'
character_set_server=utf8

然后重启mysql服务即可

python django连接数据库出现这个问题

 

选项说明:https://blog.csdn.net/zhaihaifei/article/details/51749933

 

解决方法2:在创建数据库的时候指定数据集

 

 

1.11 mysql和mysqld

mysql-it'sacommandline(administration)tool命令行工具

mysqld-it'saserverdaemon.thisisthedatabaseservermainbinary(executable)启动MYSQL服务·mysqldSQL后台程序(即MySQL服务器)。要想使用客户端程序,该程序必须运行,因为客户端通过连接服务器来访问数据库。

mysql - it's a commandline (administration) tool命令行工具

mysqld - it's a server daemon. this is the database server main binary (executable) 启动MYSQL服务

mysqld 是服务端程序 

 

mysql是命令行客户端程序

mysqld是关于服务器端的程序

mysql是mysql自带的客户端程序 一般都在cmd或者终端下操作


1.12 ubuntu文件的锁

这个是root权限的一种标志,linux下文件夹有锁头,去掉锁头的办法 去除Ubuntu文件夹有锁标志 由于在root权限下下载的东西,所以在普通用户下有锁标志,虽说在root下什么都可以操作使用,只要切换到root账户操作就ok了,但是看着就很别扭,如何去除? 1.看到有网友说使用 sudo chmod -R 777 别且说可能有危险,这不废话么,对文件递归做改变权限为可读可写可运行,当然没有锁了。 但是这就会使得原来的文件的权限发生变化。 2.可以把它拷贝到有windows的电脑上……呵呵,这样当然可以,linux下的权限什么的自然全消失。 3.使用命令改变文件的组用户 sudo chown 你的用户名 文件名 例如: sudo chown jack common 事实证明这样是可以的,但是这样只是改变common这个文件夹的Group,里边的文件或者文件夹还是有锁的。所以要 sudo chown jack common/ -R 

 

1.13实现外网访问数据库(navicat)

更改权限,更改host,更改bind-address。

 

在服务器端开启远程访问,首先进入mysql数据库,然后输入下面两个命令:

grant all privileges on *.* to 'root'@'%' identified by 'password';

flush privileges;

第一个*是数据库,可以改成允许访问的数据库名称

第二个* 是数据库的表名称,*代表允许访问任意的表

root代表远程登录使用的用户名,可以自定义

%代表允许任意ip登录,如果你想指定特定的IP,可以把%替换掉就可以了

password代表远程登录时使用的密码,可以自定义

flush privileges;这是让权限立即生效

 

修改my.cnf配置文件(字符集修改)

这个是mysql的配置文件,如果你无标题文章找不到在哪里的话,可以输入find /* -name my.cnf 找到

通过vim编辑该文件,找到bind-address = 127.0.0.1这一句,然后在前面加个#号注释掉,保存退出或者改成0.0.0.0

重启服务 service mysql restart

 

 

netstat -an|grep 3306

来查看mysql默认的端口3306是否开启,允许哪个ip使用,如果你发现,前面有127.0.0.1,就说明,3306端口只能本机ip使用

Proto  Local Address     Foreign Address     State

因此(proto)

netstat 命令详解:https://www.cnblogs.com/77qt/p/6144126.html

 

1.14 MYSQL命令

删除库:drop database <数据库名>;

 

 

1.15 django.db.utils.OperationalError: (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n")

目前最新的mysql8.0对用户密码的加密方式为caching_sha2_password, django暂时还不支持这种新增的加密方式。只需要将用户加密方式改为老的加密方式即可。
解决方案:

以下命令是在cmd窗口下完成的。

1.登录mysql,连接用户为root。
> mysql -u root -p

2.执行命令查看加密方式
> use mysql;
> select user,plugin from user where user='root';

3.执行命令修改加密方式
> alter user 'root'@'localhost' identified with mysql_native_password by 'yourpassword'

4.属性权限使配置生效
> flush privileges

重设mysql8.0的加密方式后,再次启动django服务器就没有任何问题了。

 

1.16创建用户和授权

在mysql8.0创建用户和授权和之前不太一样了,其实严格上来讲,也不能说是不一样,只能说是更严格,mysql8.0需要先创建用户和设置密码,然后才能授权.


#先创建一个用户
create user 'tone'@'%' identified by '123123';

#再进行授权
grant all privileges on *.* to 'tone'@'%' with grant option;

 

2.window系统

1.创建服务

2.设置root密码

https://www.cnblogs.com/jiqing9006/p/6252506.html

 

3.默认密码在 etc文件夹的.err文件中

4.解压版安装主要是ini文件的配置

https://www.cnblogs.com/Michael1/p/5806384.html

 

 

 

https://juejin.im/entry/5b06698cf265da0db3501fdd

drop database <数据库名>;
posted @ 2018-11-03 21:30  Gaoyongxian666  阅读(295)  评论(0编辑  收藏  举报