mysql配置

1.mysql安装目录结构

mysql通常采用从软件中心或apt-getinstall命令行下安装的话,其安装后的文件目录结构如下:

  • 主程序位置:/usr/share/mysql

它里面包含了mysql的所有主程序文件及脚本命令文件。

  • mysqldump文件位置:/usr/bin/mysqldump
  • mysql配置文件位置:/etc/mysql/cdmy.cnf
  • 常驻脚本命令位置:/usr/local/bin

该目录下存放了mysql的一些常驻脚本命令,这些命令在mysql主程序下也都也可以找到的。


2.mysql配置文件my.cnf

mysql的配置文件是my.cnf,yysql会按照如下顺序搜索查找该配置文件:

--->/etc/mysql;

---> mysql安装目录;

--->mysql的数据目录(该配置文件中默认是/var/mysql,用户可根据需要来修改该参数)

注意:/etc下的是全局设置。

  1. 修改mysql最大连接数

打开或修改max_connections=150;

  1. 修改数据存放目录

datadir=/usr/share/mysql/data #/var/lib/mysql

  1. 允许远程访问

mysql server安装后,默认是不能进行远程访问的,只能在本地访问。因此,首先需要在服务器端的mysql配置文件中注释掉如下内容:

# bind-address = 127.0.0.1


3.防火墙中允许mysql通过

$ sudo ufw allowmysql

Rule added

Rule added (v6)

$ sudo ufw status

Status: inactive //说明防火墙没有启用


4.修改mysql的数据存放目录

我们知道在my.cnf文件中指定了mysql数据存放的路径:

datadir = /var/lib/mysql

只有root权限的用户才能查看mysql的数据存放目录中的内容。一般来说,我们都会把mysql数据库放在自定义的分区目录下,除非你的/var分区足够的大。根据设计需求,我们把mysql数据库放在目录:/usr/share/mysql/data下。具体实现步骤如下:

  1. 关掉数据库:

$ sudo /etc/init.d/mysql stop

  1. 创建自定义数据目录

在/usr/share/mysql/目录下创建目录data,并修改其拥有者及所属群组为mysql:mysql:

$ sudo mkdir/usr/share/mysql/data

$ sudo chown mysql:mysql data

  1. 修改mysql配置文件my.cnf:

datadir=/usr/share/mysql/data #/var/lib/mysql

  1. 修改ubuntu中的安全设置

sudo vi/etc/apparmor.d/usr.sbin.mysqld 在这个文件里面加入权限设定,将原来的

/var/lib/mysql/ r,

/var/lib/mysql/** rwk,

更换成,

/usr/share/mysql/data/ r,

/usr/share/mysql/data/**rwk,

  1. 重新初始化数据文件,执行:

$ sudomysql_install_db --user=mysql –datadir=/usr/share/mysql/data

操作成功后会有提示,需要你重新配置这些数据库信息。

  1. 启动mysql数据库服务:

$ sudo /etc/init.d/mysql start

  1. 重新设置mysql数据库root密码:

$ mysqladmin -uroot password ‘new-password’


完成上述操作后,会发现/data目录下出现mysql相关文件。如果我们新建数据库,其数据库文件也将出现在data目录下,表示我们修改的mysql数据库文件存储目录正确。


5.mysql客户端与远程mysql服务端的连接

大致方法有三种:

  1. 直接登录到远程服务端并启用mysql:

$ ssh apuser@10.5.41.118 // ssh登录到远程服务器:

根据提示输入密码后可以登录远程服务端,然后启动mysql即可:

$ mysql -u apuser -papuser;

  1. 使用本地mysql客户端与远程服务器端mysql的直接连接访问:

这个配置比较麻烦,首先要在本地主机安装mysqlclient,请确保服务端mysqlserver已经安装好了。另外,服务端首次安装好后,默认是不能进行远程访问的,只能本地访问。因此需要在服务器端的mysql配置文件my.cnf中注释掉如下内容:

# bind-address =127.0.0.1

然后检查“/usr/local/bin”目录下中是否有客户端配置命令“mysql_config”。mysql_config命令用于编译mysql客户端程序,它放在msql的主程序目录和命令常驻目录“/usr/local/bin/”下面。由于在服务器端我们安装的是mysqlserver所以,默认情况下不会安装客户端的数据包。如果这两个目录下面没有mysql_config这个命令,则需要安装”libmysqlclient-dev“包:

$ sudo apt-get install libmysqlclient-dev

完成上述配置后,我们就可以使用mysql的客户端去连接远程服务端了,其命令如下:

$ mysql -h 10.5.41.118 -P3306 -u apuser -papuser

  1. 使用mysql客户端UI工具

网络上有许多关于mysql的客户端UI访问工具,ubuntu本身也集成了一个叫MYSQLNavigator这样一个UI化的客户端工具,我们可以通过软件中心很容易的安装并配置它,见如下截图:


6.帐户及权限管理

mysql有一个默认的系统级数据库,其名字就叫mysql。该数据库是用来对所有的mysql数据库进行管理的,其中在该数据库中有一个user表,是用来对mysql的所有用户及权限进行管理的。当然我们的帐户和权限管理也是基于此的。

  1. 配置root账户密码:

root的密码我们在安装mysql时,系统就会提示我们配置该密码,当然我们也可以使用命令来修改该密码:

$ [sudo] mysqladmin -u root password newpassword


  1. 指定用户权限

如果允许所有主机访问该服务端:

$ grant all on *.* to root[@%] identified by "root" withgrant option;

如果仅指定允许某台主机访问该服务端:

$ grant all on *.* to apuser@10.5.41.118 identified by "apuser" with grant option;


  1. 取消某一用户的权限

移除某一用户的权限:

revoke all privileges on test1.* from test1@%;


  1. 从数据库中移除该用户

$ use mysql;

$ delete from user where user="root" and host="%";


  1. 提交刷新权限:

在对用户及权限进行操作后,一定要记得刷新数据库使这些修改立即生效,否则你对账户的修改信息不会马上生效!

$ flush privileges;


  1. 查看账户的修改

$ use mysql;

$ select * from user;


7.数据库服务操作

  1. 查看mysql版本:

$ [sudo] mysqladmin -u apuser -p version

  1. 启动mysql服务器

通过脚本命令启动mysql:

$ mysqld_safe -u apuser

如果不需要指定使用哪个帐户(即使用默认账户)启动,则可直接使用”/etc/init.d“下命令启动和停止mysql:

$ mysql start|stop|restart

  1. 停止mysql:

$ [sudo] mysqladmin -u apuser -p shutdown


8.数据库操作

  1. 本机登录mysql:

$ mysql -u root -p;

  1. 显示mysql中的所有数据库

$ show databases;

  1. 改变当前使用的数据库

$ use sprdrdtest;

  1. 显示当前数据库库中的所有表

$ show tables;

  1. 创建数据库

$ create database sprdrdtest;

  1. 删除数据库

$ drop database sprdrdtest;


9.用户管理及远程访问控制

1)添加用户

create user 'username'@'host' identified by 'password';

举例:

create user 'qilong'@'%' identified by 'qilong';

授权举例:

grant select,insert on test.user to 'qilong'@'%';

grant all on *.* to 'pig'@'%';

访问远程数据库时:

mysql -h 10.5.41.118 -u qilong -P 3306 -p