美文网首页
Mysql on Linux——数据分析师不懂黑科技

Mysql on Linux——数据分析师不懂黑科技

作者: 一血老黄忠 | 来源:发表于2019-01-25 12:35 被阅读0次

    安装mysql

    sudo apt-get install mysql-server
    sudo apt-get install mysql-client
    sudo service mysql start
    

    授权用户访问数据库

    创建用户

    su root # 进入管理员权限
    mysql # 注意没有授权用户前,只有管理员权限可以访问mysql,即超级用户
    grant all privileges on *.* to "yxlhz"@'%' identified by "yxlhz"  with grant option; # 授权超级用户yxlhz,所有库,所有表和所有客户机
    
    image.png

    授权成功!

    测试访问

    quit; #推出mysql
    su ubuntu18-64 # 进入一般用户
    mysql -h127.0.0.1 -p3306 -uyxlhz -pyxlhz 
    
    image.png

    在未授权用户之前,一般用户无法访问,但是授权后,授权用户访问成功!

    创建数据库(laozhuangzhong)和表(test)

    show databases; #查看数据库列表
    create database laohuangzhong; #创建数据库
    use laohuangzhong; #使用laohuangzhong数据库
    create table test(ID char(10),name char(10),age tinyint(2)); #建表
    insert into test  values('123','lhx',30);
    insert into test  values('111','lhz',20);
    insert into test  values('112','lhz1',21);
    select * from test; # 可以查看插入了三条记录
    
    image.png

    授权用户laohuangzhong库权限

    之前我们已经授权yxlhz超级用户权限,现在我授权用户指定库laohuangzhong的权限

    grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on laohuangzhong.* to 'lhz1'@'localhost' IDENTIFIED BY 'lhz1'; #授权一般用户
    

    现在查看一下用户列表

    select host,User from mysql.user;
    
    image.png

    我们发现所有授权用户都存储在mysql.user表里。因此,我们也是可以通过修改user表来进行用户授权或取消授权的。这里不介绍了,各位都会sql操作。

    创建数据库(lhz)和表(test1)

    show databases; #查看数据库列表
    create database lhz; #创建数据库
    use lhz; #使用lhz数据库
    create table test1(ID char(10),name char(10),age tinyint(2)); #建表
    insert into test1  values('123','lhx',30);
    insert into test1  values('111','lhz',20);
    insert into test1  values('112','lhz1',21);
    select * from lhz.test1; # 可以查看插入了三条记录
    
    image.png

    R连接mysql

    安装RMySQL包

    R
    install.packages("RMySQL")
    

    安装失败,错误提示如下:

    ------------------------- ANTICONF ERROR ---------------------------
    Configuration failed because no mysql client library was found. Try installing:
     * deb: libmariadbclient-dev | libmariadb-client-lgpl-dev (Debian, Ubuntu)
     * rpm: mariadb-connector-c-devel | mariadb-devel | mysql-devel (Fedora, CentOS, RHEL)
     * csw: mysql56_dev (Solaris)
     * brew: mariadb-connector-c (OSX)
    If you already have a mysql client library installed, verify that either
    mariadb_config or mysql_config is on your PATH. If these are unavailable
    you can also set INCLUDE_DIR and LIB_DIR manually via:
    R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'
    

    意识就是没安装mysql客户端,或者客户端安装后没有添加到系统变量里,R没找到。
    我们不折腾系统PATH变量了,使用R建议的客户端试试。

    sudo apt-get install libmariadbclient-dev # 安装客户端
    R
    install.packages("RMySQL")
    

    成功安装。

    R连接mysql

    library(RMySQL)
    con <- dbConnect(RMySQL::MySQL(), 
                     dbname = "laohuangzhong",host = "localhost",port = 3306,user="yxlhz",password="yxlhz")
    
    dbGetQuery(con,"select * from laohuangzhong.test")
    dbDisconnect(con)
    

    使用超级用户yxlhz,连接成功!

    • 现在我们体验下超级用户和一般用户的差别!我们知道lhz1用户,只有laohuangzhong库的权限。
    • lhz1没有lhz库的权限,应该会连接失败。
    library(RMySQL)
    con <- dbConnect(RMySQL::MySQL(), 
                     dbname = "lhz",host = "localhost",port = 3306,
                     user="lhz1",password="lhz1")  
    

    连接失败!

    • lhz1连接laohuangzhong库试试,应该会成功。
    con <- dbConnect(RMySQL::MySQL(), 
                     dbname = "laohuangzhong",host = "localhost",port = 3306,
                     user="lhz1",password="lhz1")  
    dbDisconnect(con)
    

    lhz1用户连接laohuangzhong库成功!

    image.png

    好啦,就简单分享到这里!

    如果您觉得文章有用,可以打赏下吐血过度的一血老黄忠,鼓励写出更优秀的原创文章。

    相关文章

      网友评论

          本文标题:Mysql on Linux——数据分析师不懂黑科技

          本文链接:https://www.haomeiwen.com/subject/ixqmjqtx.html