目录:

  • 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. IE浏览器下用JS创建文件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. sql server死锁跟踪

    我们知道,可以使用SQL Server自带的Profiler工具来跟踪死锁信息.但这种方式有一个很大的敝端,就是消耗很大.据国外某大神测试,profiler甚至可以占到服务器总带宽的35%,所以,在一 ...

  3. mysql字符串拆分实现split功能

    转自:https://blog.csdn.net/pjymyself/article/details/81668157有分隔符的字符串拆分题目要求数据库中 num字段值为: 实现的效果:需要将一行数据 ...

  4. 【洛谷p1970】花匠

    莫得致敬lz谢谢.lz的题解是优秀的题解谢谢! 看算法标签 但是我并不会DP的思路,用一个很神奇的码量超级少的代码(虽然我码了超多),然后其实这个数据可以看做是一个函数嘛对吧:(比如说样例) 那么要注 ...

  5. Visual Studio 2017打包安装项目

    在我们用VS编好上位机后,就可以在自己电脑运行上位机,但是想其他人电脑运行上位机可能就行不通了,因为其他人电脑不一定有所需要的运行环境.这时我们就需要打包安装,把运行软件所需要的环境都打包在安装包里. ...

  6. 错排问题 && 洛谷 P1595 信封问题

    传送门 一道裸的错排问题 错排问题 百度百科上这样说 就是对于一个排列,每一个数都不在正确的位置上的方案数.n 个元素的错排数记为 D(n). 公式 D(n)=(n−1)∗(D(n−2)+D(n−1) ...

  7. Mysql8- Public Key Retrieval is not allowed

    在使用 MySQL 8.0 时重启应用后提示 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public ...

  8. javascript(DOM)实例

    JavaScript学习笔记 JS补充笔记 实例之跑马灯,函数创建.通过ID获取标签及内部的值,字符串的获取与拼接.定时器的使用 使用定时器实现在console中打印内容 Dom选择器使用与调试记录 ...

  9. MVC的view页面内嵌C#语法发现路径被转码的解决方法

    一,上视图代码,如下 console.log('@urlquery.ToString()'); console.log('@Html.Raw(urlquery.ToString())'); 二,显示结 ...

  10. [NOIP2009]最优贸易(图论)

    [NOIP2009]最优贸易 题目描述 CC 国有 \(n\) 个大城市和 \(m\) 条道路,每条道路连接这 \(n\) 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 \(m\ ...