• mysql


    mysql
    安装mysql
    yum -y install mysql
    重启mysql
    service mysqld status 查看状态
    service mysqld stop 停止mysql
    service mysqld restart 重启mysql
    service mysqld start 启动mysql
    登录数据库
    ./mysql -h 127.0.0.1 -u root -p
    创建用户
     insert into mysql.user(Host,User,Password) values("%","root",password("root"));
    解决Field 'ssl_cipher' doesn't have a default value的问题(mysql创建用户名和密码)
    mysql>GRANT USAGE ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    授权
    grant all privileges on *.* to root@"%" identified by 'root';
     grant select,update,create,drop on *.* to connbox @"%" identified by '918sNPH4@A&5wDKd';
    创建一个数据库(testDB)
    create database testDB;
    授权test用户拥有testDB数据库的所有权限
    grant all privileges on testDB.* to test@localhost identified by '1234';
    格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
    如果想指定部分权限给一用户:
    grant select,update on testDB.* to test@localhost identified by '1234';
    授权test用户拥有所有数据库的某些权限
    grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
    @"%" 表示对所有非本地主机授权,不包括localhost。
    刷新系统权限表
    flush privileges;
    删除用户
    Delete FROM user Where User='dmp' and Host='%';
    删除用户的数据库
    drop database testDB;
    删除账户及权限
    drop user shop@'127.0.0.1';
    drop user 用户名@ localhost;
    修改指定用户密码
    mysql>update mysql.user set password='root' where User="root" and Host="%";
    5.7版本的MYSQL的用户表的密码字段变了, 不再是password字段 而是authentication_string字段
    update mysql.user set authentication_string='e54s3SOQv7sayqP3' ('密码') where user='root' and Host = 'localhost'; 或者 set password for 'root'@'localhost'='e54s3SOQv7sayqP3' ('密码');
    查看MYSQL数据库中所有用户
    select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user;
    导出数据库
    mysqldump -u用戶名 -p密码 -d 数据库名 表名 脚本名;
    ./mysqldump -h 127.0.0.1 -u root -p dmp wechat_template>wechat_template.sql;
    表中添加字段
    alter table zr_routes_scan0_day_1 add `last_upload_time` int(11) unsigned DEFAULT '0' COMMENT '最后一次上报时间';
    删除表中字段
    alter tabletable zr_routes_scan0_21drop columnlast_upload_time;
    列出所有数据库
    show databases;
    切换数据库
    use '数据库名';
    列出所有表
    show tables;
    显示数据表结构
    describe 表名;
    删除数据库和数据表
    drop database 数据库名;
    drop table 数据表名;
    字段局部替换
    update table set name=replace(name,'aa','bb');
    MySQL server has gone away
    应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。
    解决方案:
    在my.ini文件中添加或者修改以下两个变量:
    wait_timeout=2880000
    interactive_timeout = 2880000
    如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
    sql = "set interactive_timeout=24*3600";
    mysql_real_query(...)
    执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段
    比如,图片数据的处理
    解决方案
    在my.cnf文件中添加或者修改以下变量:
    max_allowed_packet = 10M  (也可以设置自己需要的大小)
    max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。
    安装federated存储引擎
    install plugin federated soname 'ha_federated.so';
    开启federated存储引擎
    查看数据库可以支持的存储引擎
    show engines;
    mysql启动失败
    Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
    windows下重新启动mysql5的方法:
    在安装mysql时系统会添加服务,可以通过管理工具里面的 <服务> 一项来停止和启动mysql。这样修改的my.ini就会生效了。
    2、也可以用命令行模式,在运行里输入:
    停止:net stop mysql
    (其中mysql为你安装的mysql服务名称)
    启动:net start mysql
    3、如果你没安装系统服务,也可在命令行模式定位到mysql下的bin目录里,输入:
    (关闭)mysqladmin shutdown
    (启动)mysqladmin start
    查看事件是否开启,使用如下命令查看:
    SHOW VARIABLES LIKE 'event_scheduler';
    SELECT @@event_scheduler;
    SHOW PROCESSLIST;
    如果看到event_scheduler为on或者PROCESSLIST中显示有event_scheduler的信息说明就已经开启了事件。如果显示为off或者在PROCESSLIST中查看不到event_scheduler的信息,那么就说明事件没有开启,我们需要开启它。
    开启mysql的事件,通过如下三种方式开启:
    Ø 通过动态参数修改
    SET GLOBAL event_scheduler = ON;
    更改完这个参数就立刻生效了
    注意:还是要在my.cnf中添加 event_scheduler=ON。因为如果没有添加的话,mysql重启事件又会回到原来的状态了。
    Ø 更改配置文件然后重启
    在my.cnf中的[mysqld]部分添加如下内容,然后重启mysql。
    event_scheduler=ON
    Ø 通过制定事件参数启动
    mysqld ... --event_scheduler=ON
    mysql设置主从复制
    1、主从服务器分别作以下操作:
      1.1、版本一致
      1.2、初始化表,并在后台启动mysql
      1.3、修改root的密码
    2、修改主服务器master:
      #vi /etc/my.cnf
      [mysqld]
      log-bin=mysql-bin //[必须]启用二进制日志
      server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
    3、修改从服务器slave:
      #vi /etc/my.cnf
      [mysqld]
      log-bin=mysql-bin //[不是必须]启用二进制日志
      server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
    4、重启两台服务器的mysql
      /etc/init.d/mysql restart
    5、在主服务器上建立帐户并授权slave:
      #/usr/local/mysql/bin/mysql -uroot -pmttang
      mysql>GRANT REPLICATION SLAVE ON *.* to 'dertai'@'%' identified by '6TcJl8oOvwj1bQly'; //一般不用root帐号,&ldquo;%&rdquo;表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
    6、登录主服务器的mysql,查询master的状态
      mysql>show master status;
      +------------------+----------+--------------+------------------+
      | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
      +------------------+----------+--------------+------------------+
      | mysql-bin.000004 | 308 | | |
      +------------------+----------+--------------+------------------+
      1 row in set (0.00 sec)
      注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
    7、配置从服务器Slave:
      mysql>change master to master_host='116.62.12.125',master_user='dertai',master_password='6TcJl8oOvwj1bQly',master_log_file='mysql-bin.000003',master_log_pos=296502;   //注意不要断开,308数字前后无单引号。
      Mysql>start slave; //启动从服务器复制功能
    8、检查从服务器复制功能状态:
      mysql> show slave statusG
      *************************** 1. row ***************************
      Slave_IO_State: Waiting for master to send event
      Master_Host: 192.168.2.222 //主服务器地址
      Master_User: mysync //授权帐户名,尽量避免使用root
      Master_Port: 3306 //数据库端口,部分版本没有此行
      Connect_Retry: 60
      Master_Log_File: mysql-bin.000004
      Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
      Relay_Log_File: ddte-relay-bin.000003
      Relay_Log_Pos: 251
      Relay_Master_Log_File: mysql-bin.000004
      Slave_IO_Running: Yes //此状态必须YES
      Slave_SQL_Running: Yes //此状态必须YES
      ......
    注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
    以上操作过程,主从服务器配置完成。
    数据库复制报错
    修改 open_files_limit = 65535
    删除某个字段重复的记录
    delete from zr_authlist where
    mac in (select mac from ( select mac from zr_authlist group by mac having count(mac)>1) a)
    and id not in ( select min(id) from (select min(id) as id from zr_authlist group by mac having count(mac)>1 ) b);
    centos下彻底删除MYSQL 和重新安装MYSQL
    1 删除Mysql
      yum remove mysql mysql-server mysql-libs mysql-server;
      find / -name mysql 将找到的相关东西delete掉;
      rpm -qa|grep mysql(查询出来的东东yum remove掉)
    2 安装Mysql
      yum install mysql mysql-server mysql-libs mysql-server;
    mysql 日志文件mysql-bin文件清除方法,和mysql-bin相关文件的配置
    首先要说明一下,这些文件都是mysql的日志文件,如果不做主从复制的话,基本上是没用的,虽然没用,但是不建议使用rm命令删除,这样有可能会不安全,正确的方法是通过mysql的命令去删除。
    mysql> reset master;
    通过修改my.cnf文件,来设置不生成这些文件,只要删除my.cnf中的下面一行就可以了。
    log-bin=mysql-bin
    如果你需要复制,最好控制一下这些日志文件保留的天数,可以通过下面的配置设定日志文件保留的天数:
    expire_logs_days = 7
    mysql可以运行在不同sql mode模式下面,sql mode模式定义了mysql应该支持的sql语法,数据校验等!
    查看默认的sql mode模式:
    select @@sql_mode;
    我的数据库是:
    STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    在此模式下面,如果插入的数据的长度大于定义的长度,那么就会报错!
    set session sql_mode='REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI';
    在这种模式下面:插入的数据的长度大于定义的时候,就会截取,并警告,但是可以插入进去
    session表示只在本次中有效
    global:表示在本次连接中不生效,而对于新的连接就生效
    数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
    2个解决方法:
    1.临时修改:mysql>set global max_allowed_packet=524288000;修改 #512M
    2.修改my.cnf,需重启mysql。 
      在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):
      max_allowed_packet=10M
    The used table type doesn't support FULLTEXT indexes
    修改innodb为myisam
    查看最大连接数
    show variables like '%max_connections%'
    重新设置
    set global max_connections=3600
    vim /etc/my.cnf 
    max_connections = 200
    执行编写好的sql脚本
    1 source H:/1.sql
    2 select ...into outfile 方式执行sql
    mysql> select now() into outfile 'h:/data/2.sql';
    mysql修改时区的几种方法
    show variables like "%time_zone%";
    set global time_zone = '+8:00';  ##修改mysql全局时区为北京时间,即我们所在的东8区
    set time_zone = '+8:00';  ##修改当前会话时区
    flush privileges;  #立即生效
    开启慢查询日
    查看慢查询相关参数
    show variables like 'slow_query%';
    show variables like 'long_query_time';
    set global slow_query_log='ON';
    set global slow_query_log_file='/usr/local/mysql/data/slow.log';
    set global long_query_time=1;
    slow_query_log 慢查询开启状态
    slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
    long_query_time 查询超过多少秒才记录
    方法二:配置文件设置
    修改配置文件my.cnf,在[mysqld]下的下方加入
    [mysqld]
    slow_query_log = ON
    slow_query_log_file = /usr/local/mysql/data/slow.log
    long_query_time = 1
     
    MongoDb
    mongoDB 不支持IPv6
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    启动mongoDB
    ./mongod --dbpath /usr/local/mongodb/data
    设置mongoDB后台运行
    ./mongod --fork --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/log --logappend
    设置MongoDB开机启动
    vi  /etc/rc.local
    /usr/local/mongodb/bin/mongod  --fork --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/log --logappend
  • 相关阅读:
    Java的一天学习
    IIS7配置PHP图解
    主流HTML5游戏框架的分析和对比
    HTTP请求
    hibernate -- 数据库连接池的失效检查设置
    mysql备份
    深入探索SOAP1.1--使用SAAJ1.2.1
    JDBC连接执行MySQL存储过程报权限错误
    mysql(connector/ODBC)
    mysql查询优化(三)
  • 原文地址:https://www.cnblogs.com/ssmd/p/9776674.html
Copyright © 2020-2023  润新知