MySQL安装和配置以及数据导入

1.ubuntu安装mysql

 sudo apt-get install mysql-server
 
 查看mysql 状态
   systemctl status mysql
  登录mysql
    sudo mysql -u root -p		

2.访问mysql需要加sudo

sudo mysql -uroot -p
 命令行修改root密码:
   mysql> use mysql; 
   mysql> select user, host from user;
   mysql> UPDATE mysql.user set plugin='mysql_native_password' WHERE user='root';
   mysql> FLUSH PRIVILEGES;
mysql -uroot -p
  查看版本
  mysql> select version();

3.远程访问

步骤01. vim  /etc/mysql/mysql.conf.d/mysqld.cnf  
   修改配置文件mysqld.conf, 注释掉:
   #bind_address=127.0.0.1  表示只允许本地访问,注释掉该行
步骤02.
  打开MySQL root用户的远程访问权限:
  use mysql;
  update user set host = "%" where user = "root";
  flush privileges;
  
  关闭MySQL root用户远程访问权限
  use mysql;
  update user set host = "localhost" where user = "root" and host = "%";
  --delete from user where user = "root" and host = "%";;
  flush privileges;
  
 reload #不关闭UNIT的情况下重新载入配置文件,让配置生效,只重新加载.conf类的文件
  重启mysql服务或者重新载入配置文件

创建库

1.创建数据库
 show variables like '%character%';
create database if not exists my_database default character set = 'utf8';
2.创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  create user  '用户'@'%'  identified by '密码';
  grant all privileges on *.* to  '用户'@'%'  ;
  FLUSH PRIVILEGES;
3.其他
 show databases;
 show global variables like 'wait_timeout';
 -- show status \G 
 --show charset;

加载数据

LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE 
 FIELDS TERMINATED BY '\t'
 OPTIONALLY ENCLOSED BY '"'
 LINES TERMINATED BY '\n'
 IGNORE 1 LINES
 set update_time=NOW()
 ;

 delete from data_dem where id = 122;
 truncate table data_dem;
 select * from data_dem limit 10 \G 
 select count(1) from data_dem  ;

 alter database data_dem character set utf8mb4;

排查

查看网络情况
	ip     ping
	port    sudo lsof -i:3306
	iptables
###查看mysql情况
    服务状态 systemctl status mysql
	是否开放远程连接  /etc/mysql/mysql.conf.d/mysqld.cnf  

配置文件

default-authentication-plugin=mysql_native_password
character-set-server=utf8
character-set-filesystem=utf8
max_connections=1000

mysql集群

主从复制 多主复制或环形复制
主从复制技术
  01.master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
  02.slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) ;
  03.slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的
  04.slave会从master读取binlog来进行数据同步
复制的原则
	每个slave只有一个master
	每个slave只能有一个唯一的服务器ID
	每个master可以有多个salve

1.配置文件
     主服务器配置
         1.【必须】主服务器唯一ID
         server-id =1
         2.【必须】启用二进制日志    log_bin = /mysql/log/mysql-bin
         log-bin=自己本地的路径/mysqlbin
		 
		 例如: log_bin=master-bin 把这段话必须放到 [mysqld] 标签下
		 -- log-bin配置项表示binlog的base name,产生的日志文件名称类似,master-bin.00001,master-bin.00002,master-bin.00003
		 -- sync_binlog=1了,表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设
		 log_bin=master-bin
         server-id=1
         sync_binlog=1	
     从服务器配置
        1.【必须】从服务器唯一ID
		server-id=2
2.主从中的mysql内执行命令配置				
	01.在主机上建立账户并授权slave
    02.从机执行
         change master 用于配置和改变 slave 服务器用于连接 master 服务器的参数,
	     以便 slave服务器读取 master 服务器的 binlog 及 slave 服务器的 relay log。
	     同时更新 master.info 及 relay-log.info信
	     
	       执行 change master 命令后的信息保存在 master.info 和 relay-log.info 两个文件中
	  
3. MySQL 查询
    mysql> show variables like 'log_bin';
    -- show master status命令列出了日志位点信息,包括binlog file,binlog position等
   mysql> show master status   -- log-bin的配置名称
   -- server是slave,则执行show slave status中
   mysql > show slave status\G
   
4.说明
    01. MySQL Replication在Master端开启binlog,
	 Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。 
     02.通过使用mysqlbinlog工具来使恢复数据 
	03.日志位置
	    binlog是二进制文件,普通文件查看器cat more vi等都无法打开,须使用自带的 mysqlbinlog 命令查看
        binlog日志与数据库文件在同目录中
		  mysql> show binlog events in

参考:

ubuntu18.04每次访问mysql需要加sudo问题 https://www.cnblogs.com/wlzx-dic/p/14068364.html
MySQL允许远程访问  https://www.cnblogs.com/Deaseyy/p/13420245.html
mysql中如何在创建数据库的时候指定数据库的字符集 https://www.cnblogs.com/bulh/articles/10609198.html
上一篇:尝试将 SCRIPT ompbox\private\ompmex 作为函数执行


下一篇:Ajax -异步请求 -jquery中ajax分类 -第一层 $.ajax -第二层($.get /$.post) -第三层($.getJson/$.getScript) -相应演示