#执行初始化配置脚本,创建系统自带的数据库和表。
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;