目录:

  • centos安装mysql
  • 使用mysql客户端进行简单操作
  • python2和python3连接mysql
  • mysql导入文件问题
  • 死锁解决办法
  • windows 7 远程连接 mysql 服务器

1、centos安装mysql

验证是否已有mysql:rpm -qa | grep mysql

在官网 https://dev.mysql.com/downloads/repo/yum/ 下载rpm,注意下载第一个:

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

下载到本地之后,开始yum安装:

rpm -ivh mysql57-community-release-el7-.noarch.rpm
yum install mysql-server

启动mysql(注意启动只能有管理员权限的用户才可以启动):

sudo systemctl start mysqld

同理停止mysql也只能用管理员权限才可以停止:

sudo service stop mysqld

查看mysql运行状态:

systemctl status mysqld

验证mysql的安装:

mysqladmin --version

 mysqladmin Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)

2、使用客户端进行简单的操作

打开mysql,这里出现了一些问题,输入mysql时出现:

ERROR  (): Access denied for user 'fangying'@'localhost' (using password: NO)

解决办法:

  找到密码:

cat /var/log/mysqld.log  | grep password 

2018-06-12T05:16:18.752589Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: =h8p&,-IffXs

  再用此密码登录即可:(-h是localhost时可以省略,其余的ip不可以省略)

/usr/bin/mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 8.0.

查看表之前会让你进行重设密码:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'your password';
Query OK, 0 rows affected (0.04 sec)

此时再次查看表示就可以了:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

3、python2和python3连接mysql

python2可以通过MySQLdb模块来连接mysql,python3则可以通过pymysql来连接mysql:

注意,这里遇到了一个问题:在mysql的客户端可以连接mysql的用户名和密码,在python3连接时,一直提示:

OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

查找了非常多的资料,知道了出现这个错误提示的原因应该是,没找到密码,比如没输入密码,这个混淆使得我找了很久都找不到解决的办法,因为实际上这个提示不够明确!

在使用python2中的MySQLdb模块去连接mysql时的错误提示是:

password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory")

用这个错误提示去查找解决办法时,立刻就找到了:创建用户使用 mysql_native_password密码(虽然也不是完全一样的问题,但是的确问题得到了解决)

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'pMQiEge1ikst7S_6tlXzBOmt_4b';
grant all on *.* to 'root'@'%';

问题在于MySQL8.0.11版本默认的认证方式是caching_sha2_password (而在MySQL5.7版本则为mysql_native_password),为了修改默认认证方式(之后创建密码时),可以修改配置文件/etc/my.cnf:

另:

centos7 python2中MySQLdb模块的安装:

yum install MySQL-python
import MySQLdb

4、mysql的导入问题

1)将本地文件导入到mysql中

将本地文件导入到mysql中,需要指定local_infile这个参数为开启的状态,而做到这一点需要在安装的时候编译源码安装,且指定 --enable-local-infile,默认是不启动的(我安装的时候并没有这么做):

./configure --prefix=/usr/local/mysql --enable-local-infile
make install

所以这个方法就不行了;

如果编译的时候没有这么做,又不想重新编译的话,那就可以在连接数据库时加入 --local-infile:

mysql -u echo -p --local-infile

此时在导入数据时要用 load data local 而不是 load data(这样会出错):

load data local infile '/home/fangying/GAna/aod_csv/aod_all_2015_1.csv' into table example fields terminated by ',' ignore 1 lines;

或者在配置文件/etc/my.cnf的[mysql]和[mysqld]都加上 local-infile=1,随后登录时不加 --local-infile也可以导入本地文件。

若有空值的话,需要把空值处改为‘\n’,否则对于数值型会把空值设为0,对于日期会把空值设为0000-00-00,还可以如下导入也可以使得:(如果想显示警告的话:--show-warnings )

load data local infile '/home/fangying/GAna/aod_csv/aod_all_2015_1.csv' into table example2 fields terminated by ',' ignore 1 lines (id,x,y,@vaod_value,ele,prs,tem,rhu,merra2,date_,win_avg) set aod_value=nullif(@vaod_value,'');

已解决的问题1:

将本地的文件导入到mysql中时,出现了错误:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

这个错误的原因是 --secure-file-priv 参数的设置问题,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。

  • secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
  • secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
  • secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。

查看这个值:

show global variables like 'secure_file_priv'
Value Variable_name
0 /var/lib/mysql-files/ secure_file_priv

所以我们需要修改这个参数的值,打开配置文件/etc/my.cnf,加入:

secure_file_priv=''

再次查看变量值已经变成了 ‘’

已经解决的问题2:

在本地已经可以load data local了,但是在jupyter上还做不到这个:

这是因为我的jypyter添加的mysql kernel是直接用的git上面别人写好的程序,在这个程序里面连接mysql用的是pymysql,只能指定常用的参数(host、user、password、port、charset),其他的参数都没有考虑,所以就无法添加local_infile=1这个参数(可以修改源代码),嫌麻烦就不做了。

python连接mysql时,只要指定了 local-infile=1 在操作时就可以local data local了。所以问题还是出在了 local infile 参数的问题上。

但是我比较不理解的是,我在本地客户端连接mysql时只指定了一次 -- local-infile ,此后的连接都不指定这个参数,也是可以导入本地数据的,为什么呢?

2)将服务器上的文件导入到mysql中

使用load data,这里只可以上传配置文件中datadir中指定的位置的文件(/var/lib/mysql)和缓存位置(/tmp),其他的位置上的文件都不行:

load data infile '/var/lib/mysql/a.txt' into table example fields terminated by ',' ignore 1 lines;

可以修改datadir的值,有点麻烦。

注意:这里提到了缓存位置,实际上load data本来就是把数据读取到tmp位置中

5、死锁解决办法

操作时出现以下错误提示:

1205, 'Lock wait timeout exceeded; try restarting transaction'

找出死锁,杀死:

select * from information_schema.innodb_trx

kill 22

直接在mysql中执行kill操作。

6、windows7 远程连接mysql 服务器

1)在centos 的mysql 服务器上创建一个允许ip为192.168.***.***的主机访问的用户并授权:(在mysql 8中必须先创建后授权,注意授权用户的权限)

create user 'username'@'192.168.***.***' identified by 'your password';
grant all privileges on *.* to username@192.168.***.***;

注意:这里创建用户的含义是ip为192.168.***.***的主机的username用户可以访问mysql服务器,并拥有这些权限。

2)在centos 开放mysql占用的端口:

sudo firewall-cmd --zone=public --add-port=3307/tcp --permanent

3)在windows 7命令行或者workbench连接即可:

mysql -h 192.168.***.*** -u username -p

在workbench中 ,database - connect database即可。

centos mysql初探 -- 配置、基本操作及问题的更多相关文章

  1. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  2. CentOS Mysql安装配置

    一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数 ...

  3. centos mysql iptables配置

    在CentOS系统中防火墙默认是阻止3306端口的,我们要是想访问mysql数据库,我们需要这个端口,命令如下: iptables -I INPUT -p tcp --dport 3036 -j AC ...

  4. CentOS 7下的 Mysql 主从配置

    最近在玩mysql主从配置,在此记录一下 一.前言 1.安装两个虚拟机(CentOS 7).iP分别是192.168.47.131 和192.168.47.133.其中192.168.47.133作为 ...

  5. CentOs中iptables配置允许mysql远程访问

    在CentOS系统中防火墙默认是阻止3306端口的,我们要是想访问mysql数据库,我们需要这个端口,命令如下: 1 /sbin/iptables -I INPUT -p tcp --dport 30 ...

  6. CentOS+Nginx+PHP+MySQL详细配置(图解)

    原文地址: http://www.jb51.net/article/26597.htm CentOS+Nginx+PHP+MySQL详细配置(带有图解),需要的朋友可以参考下.   一.安装MySQL ...

  7. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  8. MYSQL在centos上主从配置

    主从配置理论传送门:http://blog.csdn.net/hguisu/article/details/7325124 具体配置方案: 一:MYSQL主从配置   1.1 部署环境 主(maste ...

  9. 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...

随机推荐

  1. Vue 基础 day06 webpack 3.x 结合vue

    在普通页面使用 render 函数渲染组件 var login = { template: '<h3>login</h3>' } var vm = new Vue({ // c ...

  2. 修复线上bug

    1,git branch new_branch 2,git push origin new_branch 以上是线上地址操作,以下是本地仓库操作 3,git fetch 4,git checkout ...

  3. Elasticsearch7.X 入门学习第九课笔记-----聚合分析Aggregation

    原文:Elasticsearch7.X 入门学习第九课笔记-----聚合分析Aggregation 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. ...

  4. 03-CSS颜色、文本、字体、边框、背景

    # Css颜色,文本字体 ## css颜色表示法1.颜色名表示,比如:red 红色,gold 金色 2.16进制数值表示,比如:#ff0000 表示红色,这种可以简写成 #f00 3.RGB颜色: 红 ...

  5. [转载]浅谈JavaScript函数重载

     原文地址:浅谈JavaScript函数重载 作者:ChessZhang 上个星期四下午,接到了网易的视频面试(前端实习生第二轮技术面试).面了一个多小时,自我感觉面试得很糟糕的,因为问到的很多问题都 ...

  6. 下载-MS SQL Server 2005(大全版)含开发人员版、企业版、标准版【转】

    中文名称:微软SQL Server 2005 英文名称:MS SQL Server 2005资源类型:ISO版本:开发人员版.企业版.标准版发行时间:2006年制作发行:微软公司地区:大陆语言:普通话 ...

  7. Bootstrap框架如何设置导入链接

    bootstrap文件划分: 导入规则: 方式一:可以先下载 ----https://v3.bootcss.com/ (1) 注意事项: (2) (3) 注意1:bootstrap中的js文件依赖于j ...

  8. 211-基于FMC的ADC-DAC子卡

    基于FMC的ADC-DAC子卡 一.板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集.1路2.5G DA回放的FMC.1路AD同步信号子卡.板卡采用标准FMC子卡架构 ...

  9. Linux性能优化从入门到实战:13 内存篇:内存指标/工具总结、问题定位和调优

    内存性能指标 系统内存指标 已用内存和剩余内存很容易理解,就是已经使用和还未使用的内存. 共享内存是通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小.tmpfs 其实也是一种特 ...

  10. 使用GDB调试时attach ID不被允许

    在进入gdb后,直接使用attach ID,出现下面的情况: Could not attach to process.  If your uid matches the uid of the targ ...