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下的是全局设置。
-
修改mysql最大连接数
打开或修改max_connections=150;
-
修改数据存放目录
datadir=/usr/share/mysql/data #/var/lib/mysql
-
允许远程访问
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下。具体实现步骤如下:
-
关掉数据库:
-
$ sudo /etc/init.d/mysql stop
-
创建自定义数据目录
在/usr/share/mysql/目录下创建目录data,并修改其拥有者及所属群组为mysql:mysql:
$ sudo mkdir/usr/share/mysql/data
$ sudo chown mysql:mysql data
-
修改mysql配置文件my.cnf:
datadir=/usr/share/mysql/data #/var/lib/mysql
-
修改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,
-
重新初始化数据文件,执行:
$ sudomysql_install_db --user=mysql –datadir=/usr/share/mysql/data
操作成功后会有提示,需要你重新配置这些数据库信息。
-
启动mysql数据库服务:
$ sudo /etc/init.d/mysql start
-
重新设置mysql数据库root密码:
$ mysqladmin -uroot password ‘new-password’
完成上述操作后,会发现/data目录下出现mysql相关文件。如果我们新建数据库,其数据库文件也将出现在data目录下,表示我们修改的mysql数据库文件存储目录正确。
5.mysql客户端与远程mysql服务端的连接
大致方法有三种:
-
直接登录到远程服务端并启用mysql:
$ ssh apuser@10.5.41.118 // ssh登录到远程服务器:
根据提示输入密码后可以登录远程服务端,然后启动mysql即可:
$ mysql -u apuser -papuser;
-
使用本地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
-
使用mysql客户端UI工具
网络上有许多关于mysql的客户端UI访问工具,ubuntu本身也集成了一个叫MYSQLNavigator这样一个UI化的客户端工具,我们可以通过软件中心很容易的安装并配置它,见如下截图:
6.帐户及权限管理
mysql有一个默认的系统级数据库,其名字就叫mysql。该数据库是用来对所有的mysql数据库进行管理的,其中在该数据库中有一个user表,是用来对mysql的所有用户及权限进行管理的。当然我们的帐户和权限管理也是基于此的。
-
配置root账户密码:
root的密码我们在安装mysql时,系统就会提示我们配置该密码,当然我们也可以使用命令来修改该密码:
$ [sudo] mysqladmin -u root password newpassword
-
指定用户权限
如果允许所有主机访问该服务端:
$ 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;
-
取消某一用户的权限
移除某一用户的权限:
revoke all privileges on test1.* from test1@%;
-
从数据库中移除该用户
$ use mysql;
$ delete from user where user="root" and host="%";
-
提交刷新权限:
在对用户及权限进行操作后,一定要记得刷新数据库使这些修改立即生效,否则你对账户的修改信息不会马上生效!
$ flush privileges;
-
查看账户的修改
$ use mysql;
$ select * from user;
7.数据库服务操作
-
查看mysql版本:
$ [sudo] mysqladmin -u apuser -p version
-
启动mysql服务器
通过脚本命令启动mysql:
$ mysqld_safe -u apuser
如果不需要指定使用哪个帐户(即使用默认账户)启动,则可直接使用”/etc/init.d“下命令启动和停止mysql:
$ mysql start|stop|restart
-
停止mysql:
$ [sudo] mysqladmin -u apuser -p shutdown
8.数据库操作
-
本机登录mysql:
$ mysql -u root -p;
-
显示mysql中的所有数据库
$ show databases;
-
改变当前使用的数据库
$ use sprdrdtest;
-
显示当前数据库库中的所有表
$ show tables;
-
创建数据库
$ create database sprdrdtest;
-
删除数据库
$ 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