Red Hat Enterprise Linux or CentOS
参考:
1. 下载mysql的官方源
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2. 安装mysql-community-release-el7-5.noarch.rpm包
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
3. 安装这个包后,会获得两个mysql的yum repo源
[root@localhost ~]# ls -1 /etc/yum.repos.d/mysql-community*
/etc/yum.repos.d/mysql-community.repo
/etc/yum.repos.d/mysql-community-source.repo
4. 安装mysql服务器
# yum install mysql-server
此步骤根据提示安装,下载文件较多,需要耐心等待
也可以只安装mysql客户端
# yum install mysql
5. 启动MySQL
# systemctl start mysqld
设置为开机启动
# systemctl enable mysqld
完成后做一个安全安装
# mysql_secure_installation
提示项全部选Y
会提示给root设置密码
7. 创建数据库
mysql> CREATE DATABASE database CHARACTER SET utf8 COLLATE utf8_bin;
8. 创建数据库用户
mysql> CREATE USER username IDENTIFIED BY 'password';
9. 授予权限
mysql> GRANT ALL PRIVILEGES ON database.* TO 'username'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
10. 如果需要为mysql打开防火墙,请参考Linux管理文档
修改MySQL数据目录
1、移动data目录,好象停止服务前拷贝能保留几个sock和pid临时文件
cp -R /var/lib/mysql /data
chown -R mysql:root /data/mysql
2. 停止服务
systemctl stop mysqld
3、修改/etc/my.cnf
在[mysqld]中,
把datadir=/var/lib/mysql更改为datadir=/data/mysql
把socket=/var/lib/mysql.sock更改为socket=/data/mysql/mysql.sock
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
在文件末尾中添加socket路径,如果不添加则root用户无法登录:
[client]
socket=/data/mysql/mysql.sock
4. 修改SELinux配置
装个工具
# yum install policycoreutils-python
设置权限
# semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
应用权限
# restorecon -R -v /data/mysql
提示:restorecon reset /data/mysql context system_u:object_r:default_t:s0->system_u:object_r:mysqld_db_t:s0
不行了再敲下面这句,反复来几次,SELinux权限愁人死了
# chcon -R -u system_u -r object_r -t mysqld_db_t /data/mysql
如果实在搞不定SELinux权限,mysqld无法正常启动,网上找个办法直接关掉SELinux吧
5. 重启试试
# systemctl start mysqld
为root用户授权,可以从外网直接访问MySQL
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Totem2012$' WITH GRANT OPTION;
导出数据库
#mysqldump -u root -p cms > cms.sql
导入数据库
首先需要创建数据库
mysql> CREATE DATABASE cms CHARACTER SET utf8 COLLATE utf8_bin;
#mysql -u root -p cms < cms.sql
远程连接数据库
#mysql -u root -p -h 10.172.246.158 -Dcms
MySQL 用户管理及权限管理
在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户:
CREATE USER username IDENTIFIED BY 'password';
新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下:
授予username用户在所有数据库上的所有权限。
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
注意要求主机使用百分号%,这样从别的任何地方都可以连接
注意要求主机使用localhost,这样才可以使用localhost连接数据库
如果此时发现刚刚给的权限太大了,如果我们只是想授予它在某个数据库上的权限,那么需要切换到root 用户撤销刚才的权限,重新授权:
EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';
甚至还可以指定该用户只能执行 select 和 update 命令:
GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';
这样一来,再次以username登陆 MySQL,只有wordpress数据库是对其可见的,并且如果你只授权它select权限,那么它就不能执行delete 语句。
刷新权限:
FLUSH PRIVILEGES;
删除刚才创建的用户:
DROP USER username@localhost;
仔细上面几个命令,可以发现不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上及格命令实际上都是在操作mysql 数据库中的user表,可以用如下命令查看相应用户及对应的host:
SELECT User, Host FROM user;
当然,这个表中还包含很多其它例如用户密码、权限设置等很多内容,操作时候尤其需要小心。
参考:
1. 下载mysql的官方源
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2. 安装mysql-community-release-el7-5.noarch.rpm包
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
3. 安装这个包后,会获得两个mysql的yum repo源
[root@localhost ~]# ls -1 /etc/yum.repos.d/mysql-community*
/etc/yum.repos.d/mysql-community.repo
/etc/yum.repos.d/mysql-community-source.repo
4. 安装mysql服务器
# yum install mysql-server
此步骤根据提示安装,下载文件较多,需要耐心等待
也可以只安装mysql客户端
# yum install mysql
5. 启动MySQL
# systemctl start mysqld
设置为开机启动
# systemctl enable mysqld
完成后做一个安全安装
# mysql_secure_installation
提示项全部选Y
会提示给root设置密码
7. 创建数据库
mysql> CREATE DATABASE database CHARACTER SET utf8 COLLATE utf8_bin;
8. 创建数据库用户
mysql> CREATE USER username IDENTIFIED BY 'password';
9. 授予权限
mysql> GRANT ALL PRIVILEGES ON database.* TO 'username'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
10. 如果需要为mysql打开防火墙,请参考Linux管理文档
修改MySQL数据目录
1、移动data目录,好象停止服务前拷贝能保留几个sock和pid临时文件
cp -R /var/lib/mysql /data
chown -R mysql:root /data/mysql
2. 停止服务
systemctl stop mysqld
3、修改/etc/my.cnf
在[mysqld]中,
把datadir=/var/lib/mysql更改为datadir=/data/mysql
把socket=/var/lib/mysql.sock更改为socket=/data/mysql/mysql.sock
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
在文件末尾中添加socket路径,如果不添加则root用户无法登录:
[client]
socket=/data/mysql/mysql.sock
4. 修改SELinux配置
装个工具
# yum install policycoreutils-python
设置权限
# semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
应用权限
# restorecon -R -v /data/mysql
提示:restorecon reset /data/mysql context system_u:object_r:default_t:s0->system_u:object_r:mysqld_db_t:s0
不行了再敲下面这句,反复来几次,SELinux权限愁人死了
# chcon -R -u system_u -r object_r -t mysqld_db_t /data/mysql
如果实在搞不定SELinux权限,mysqld无法正常启动,网上找个办法直接关掉SELinux吧
5. 重启试试
# systemctl start mysqld
为root用户授权,可以从外网直接访问MySQL
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Totem2012$' WITH GRANT OPTION;
导出数据库
#mysqldump -u root -p cms > cms.sql
导入数据库
首先需要创建数据库
mysql> CREATE DATABASE cms CHARACTER SET utf8 COLLATE utf8_bin;
#mysql -u root -p cms < cms.sql
远程连接数据库
#mysql -u root -p -h 10.172.246.158 -Dcms
MySQL 用户管理及权限管理
在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户:
CREATE USER username IDENTIFIED BY 'password';
新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下:
授予username用户在所有数据库上的所有权限。
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
注意要求主机使用百分号%,这样从别的任何地方都可以连接
注意要求主机使用localhost,这样才可以使用localhost连接数据库
如果此时发现刚刚给的权限太大了,如果我们只是想授予它在某个数据库上的权限,那么需要切换到root 用户撤销刚才的权限,重新授权:
EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';
甚至还可以指定该用户只能执行 select 和 update 命令:
GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';
这样一来,再次以username登陆 MySQL,只有wordpress数据库是对其可见的,并且如果你只授权它select权限,那么它就不能执行delete 语句。
刷新权限:
FLUSH PRIVILEGES;
删除刚才创建的用户:
DROP USER username@localhost;
仔细上面几个命令,可以发现不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上及格命令实际上都是在操作mysql 数据库中的user表,可以用如下命令查看相应用户及对应的host:
SELECT User, Host FROM user;
当然,这个表中还包含很多其它例如用户密码、权限设置等很多内容,操作时候尤其需要小心。