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 <数据库名>;