Linux下MySQL 5.6.24的编译安装与部署(2)

#执行初始化配置脚本,创建系统自带的数据库和表。
scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
初始化脚本在 /usr/local/mysql/my.cnf 生成了配置文件。需要更改该配置文件的所有者:
chown -R mysql:mysql /usr/local/mysql
多说两句:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!注意:在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

#复制服务启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

#启动MySQL服务
service mysqld start

# 设置开机自动启动服务
chkconfig mysqld on

chkconfig  --list mysqld5.5 mysqld5.5      0:off 1:off 2:on 3:on 4:on 5:on 6:off 


# 修改MySQL用户root的密码(授权法,例如:你想root用户使用root密码从任何主机连接到mysql服务器)
mysql -u root(进入MySQ终端)

mysql>use mysql;(进入MySQL数据库)


mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";(授权root用户使用root password从任何主机连接到mysql服务器)


mysql>update user set Password = password('123456') where User='root';(修改root用户密码为123456)
mysql>flush privileges;(特权)


mysql>exit;(退出)

# 可选:运行安全设置脚本,修改MySQL用户root(不是系统的root!)的密码,禁止root远程连接(防止破解密码),移除test数据库和匿名用户,强烈建议生产服务器使用:

/usr/local/mysql/bin/mysql_secure_installation

=== MySQL的使用 ===

mysql [-h <主机>] [-u <用户名>] [-p] [数据库名]

●更改root管理员的密码

mysql> update mysql.user set password=password('123456') where user='root';

●添加用户admin,允许从任何地方登录MySQL服务器

mysql> insert into user(host,user,password) values("%","admin",password("pwabc"));


●刷新用户授权信息

mysql> flush privileges;

●删除MySQL的空用户

mysql> delete from mysql.user where user='';

●显示数据库结构

mysql> show database;

mysql> show tables;

●显示数据表的结构

DESCRIBE [数据库名.]表名

mysql> use mysql;

mysql> describe user;

●创建新的数据库

CREATE DATABASE 数据库名

mysql> create database mydb;

●创建新的数据表

CREATE TABLE 表名 (字段定义……)

mysql> CREATE TABLE users (user_name CHAR(30) NOT NULL, user_password CHAR(20) NOT NULL DEFAULT '123456', PRIMARY KEY (user_name));

●修改表名

alter table 表名 rename to 新表名

●删除一个数据表

DROP TABLE [数据库名.]表名

mysql> drop table mydb.users;

●删除一个数据库

DROP DATABASE 数据库名

mysql> drop database mydb;

●插入数据记录

INSERT INTO 表名(字段1,字段2,……) VALUES(字段1的值,字段2的值,……)

mysql> insert into mydb.users(user_name,user_password) values('zhangsan',encrypt('123456'));

●查询数据记录

SELECT 字段名1,字段名2…… FROM 表名 WHERE 条件表达式

mysql> select * from mydb.users;

mysql> select user_name,user_password from mydb.user where user_name='zhangsan';

●修改

数据记录

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] WHERE 条件表达式

mysql> update mydb.users set user_password=encrypt('123123') where user_name='list';

●删除数据记录

DELETE FROM 表名 WHERE 条件表达式

mysql> delete from mydb.users where user_name='lisi';

●数据库的备份

mysqldump -u [用户名] -p [密码] [options] [数据库名] [表名] > /备份路径/备份文件名

# 备份整个mydb数据库

mysqldump -u root -p mydb > mysql-mydb.sql

# 备份mysql数据库中的host表、user表

mysqldump -u root -p mysql host user > mysql.host-user.sql

# 备份MySQL服务器中所有数据库

mysqldump -u root -p --all-databases > mysql-all.sql

●恢复数据库

mysql -u root -p [数据库名] < /备份路径/备份文件名

mysql -u root -p < mysql-all.sql

mysql -u root -p mydb < mysql-mydb.sql

●授予权限

GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY '密码' ]

mysql> grant select on mysql.user to admin@'localhost' identified by 'pw123';

mysql> grant all on mydb.* to admin1@'localhost' identified by '123456';

mysql> grant select on mydb.* to admin2@'192.168.0.0/24' identified by '123456';

mysql> grant select,insert on mydb.* to admin3@'%.benet.com' identified by 'pw456';

●查看权限

SHOW GRANTS FOR 用户名@域名或IP

mysql> show grants for root@'localhost';

●撤销权限

REVOKE 权限列表 on 数据库名.表名 from 用户名@域名或者IP

revoke all on mydb.* from admin3@'%.benet.com';

=======================

重置MySQL的root用户密码

●已经知道mysql数据库的root密码

# 方法一:在shell环境中,使用mysqladmin命令设置(需要知道原密码)

[root@CentOS ~]# mysqladmin -u root -p password "123456"

# 方法二:在“mysql>”环境中,使用update命令,直接更新mysql库user表的数据

[root@CentOS ~]# mysql -u root -p

mysql> update mysql.user set password=password('123456') where user='root';

mysql> flush privileges;

# 方法三:在“mysql>”环境中,使用grant命令,修改root用户的授权权限。

mysql>GRANT ALL ON *.* TO root@'localhost' IDENTIFIED BY '123456';

●忘记mysql数据库的root用户的密码

# 关闭mysql服务

service mysqld stop

# 或者

killall mysqld

# 使用myslq_safe脚本以安全模式(不加载授权表)启动mysqld服务(数据库位非默认值需要用--datadir指定)

/usr/local/mysql/bin/mysqld_safe --skip-grant-table --datadir=/var/mysql/data &

# 使用空密码的root用户登录数据库,重新设置root的密码

[root@CentOS ~]# mysql -u root

mysql> update mysql.user set password=password('123456') where user='root';

mysql> flush privileges;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0762ed198724cd800a925733fd8d7493.html